全部產品
Search
文件中心

:MySQL連接器

更新時間:Jul 30, 2024

使用MySQL連接器能夠讓您在外部MySQL執行個體中查詢和建立表。該連接器可以用於不同系統(例如,MySQL和Hive),或者兩個不同MySQL執行個體間的資料進行JOIN操作。

背景資訊

本文為您介紹MySQL連接器相關的內容和操作,具體如下:

前提條件

使用限制

  • EMR-3.38.0及後續版本的Hadoop叢集或Trino叢集,支援配置MySQL連接器。

  • 串連的MySQL需要是5.7、8.0版本或更高的版本。

  • Trino的Coordinator和所有Worker節點必須能夠訪問MySQL,預設連接埠為3306。

  • 暫不支援下列SQL命令:

    • DELETE

    • GRANT

    • REVOKE

    • SHOW GRANTS

    • SHOW ROLES

    • SHOW ROLE GRANTS

配置MySQL連接器

修改MySQL連接器配置,詳情請參見配置連接器

連接器預設配置

進入EMR控制台的Trino服務的配置頁面,在服務配置地區,單擊mysql.properties頁簽,修改以下參數,參數值請根據您實際情況修改。

參數

描述

connection-url

資料連線字串,詳情請​參見查看和管理執行個體串連地址和連接埠

例如,jdbc:mysql://rm-2ze5ipacsu8265q****.mysql.rds.aliyuncs.com:3306

connection-user

資料庫的使用者名稱。該使用者具有訪問上述RDS MySQL庫中表的許可權。

connection-password

connection-user對應的密碼。

配置多個MySQL服務

如果您有多個MySQL服務,可以在etc/catalog下建立對應數量且不重名的設定檔,確保檔案尾碼為.properties格式即可。例如,建立的設定檔名稱為sales.properties,Trino會使用該檔案配置的連接器建立一個名為sales的Catalog。

配置樣本

在EMR叢集中,如果需要配置多個MySQL服務,可以使用connector[x].properties添加自訂配置項來配置MySQL服務,其中N 為1、2、3……。詳細資料請參見以下步驟:

  1. 在EMR控制台的Trino服務的配置頁面,在服務配置地區的mysql.properties頁簽中,修改配置connection-userconnection-passwordconnection-url

    您可以單擊上方的新增配置項,添加您需要的配置項,詳情請參見添加配置項

  2. 儲存配置。

    1. 服務配置,單擊儲存

    2. 在彈出的對話方塊中,輸入執行原因,單擊儲存

  3. 重啟服務。

    1. 在右上方選擇更多操作 > 重啟

    2. 在彈出的對話方塊中,輸入執行原因,單擊確定

    3. 確認對話方塊中,單擊確定

類型映射

DECIMAL類型處理

精度超過38位的DECIMAL類型可以通過設定配置項decimal_mapping或將decimal_mapping的Session屬性設為allow_overflow來映射到Trino的DECIMAL。 結果類型的範圍由配置項decimal-default-scaledecimal-rounding-mode控制,其精度恒定為38。

預設情況下,需舍入或截斷才能匹配的值在運行時會執行失敗。這一行為由配置項decimal-rounding-modedecimal-rounding-mode的Session屬性控制,其值可設為UNNECESSARY(預設值)、UP、DOWN、CEILING、FLOOR、HALF_UP、HALF_DOWN或HALF_EVEN。

通用配置屬性

通過配置下列屬性,可以將來自資料來源的資料類型映射到Trino的資料類型,以及可以在Trino中緩衝中繼資料。

屬性

描述

unsupported-type-handling

配置如何處理不支援的資料列類型。取值如下:

  • IGNORE(預設值):列不可訪問。

  • CONVERT_TO_VARCHAR:列被轉換為無界的VARCHAR。

jdbc-types-mapped-to-varchar

允許以逗號(,)分隔的列表的資料類型映射強制轉換為無界VARCHAR。

case-insensitive-name-matching

資料庫和集合名稱是否區分大小寫。取值如下:

  • true:不區分大小寫。

  • false(預設值):區分大小寫。

case-insensitive-name-matching.cache-ttl

不區分大小寫資料庫和集合名稱的緩衝時間。

預設值為1,單位分鐘。

metadata.cache-ttl

緩衝包括表和列統計資訊在內的中繼資料的期間。

預設值0表示禁止緩衝。

metadata.cache-missing

是否緩衝包括表和列統計資訊在內的中繼資料的狀態。取值如下:

  • true:緩衝。

  • false(預設值):不緩衝。

樣本:查詢MySQL

  1. 查看RDS的資料庫。

    1. 通過SSH方式串連叢集,詳情請參見登入叢集

    2. 執行如下命令,串連Trino用戶端。

      • DataLake叢集

        trino --server master-1-1:9090 --catalog iceberg --schema default
      • Hadoop叢集或單獨的Trino叢集

        trino --server emr-header-1:9090 --catalog iceberg --schema default
    3. 執行如下命令,查看Schema。

      SHOW schemas FROM mysql;
      說明

      mysql為properties設定檔的名稱。

    4. 執行如下命令,查看資料庫。

      SHOW tables FROM mysql.web;
      說明

      本文樣本中的web是您在MySQL上建立的資料庫。

  2. 查詢表資料。

    • 查詢mysql.web.clicks表的資料。

      SELECT * FROM mysql.web.clicks
    • 查詢mysql.web.clicks表的列資訊。

      SHOW columns FROM mysql.web.clicks;

      或者使用以下命令查詢表的列資訊。

      DESCRIBE mysql.web.clicks;

下推(Pushdown)

Pushdown詳細資料,請參見Trino官網文檔Pushdown

MySQL連接器支援下推的運算元和函數情況如下:

  • 運算元

    • Join

    • Limit

    • Top-N

  • 函數

    • avg()

    • count()

    • max()

    • min()

    • sum()

    • stddev()

    • stddev_pop()

    • stddev_samp()

    • variance()

    • var_pop()

    • var_samp()