使用MySQL連接器能夠讓您在外部MySQL執行個體中查詢和建立表。該連接器可以用於不同系統(例如,MySQL和Hive),或者兩個不同MySQL執行個體間的資料進行JOIN操作。
背景資訊
本文為您介紹MySQL連接器相關的內容和操作,具體如下:
前提條件
已建立DataLake叢集或Hadoop叢集,並選擇了Trino服務,或者建立單獨的Trino叢集,詳情請參見建立叢集。
已購買RDS,詳情請參見快速建立RDS 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……。詳細資料請參見以下步驟:
在EMR控制台的Trino服務的配置頁面,在服務配置地區的mysql.properties頁簽中,修改配置connection-user、connection-password和connection-url。
您可以單擊上方的新增配置項,添加您需要的配置項,詳情請參見添加配置項。
儲存配置。
在服務配置,單擊儲存。
在彈出的對話方塊中,輸入執行原因,單擊儲存。
重啟服務。
在右上方選擇
。在彈出的對話方塊中,輸入執行原因,單擊確定。
在確認對話方塊中,單擊確定。
類型映射
DECIMAL類型處理
精度超過38位的DECIMAL類型可以通過設定配置項decimal_mapping或將decimal_mapping的Session屬性設為allow_overflow來映射到Trino的DECIMAL。 結果類型的範圍由配置項decimal-default-scale或decimal-rounding-mode控制,其精度恒定為38。
預設情況下,需舍入或截斷才能匹配的值在運行時會執行失敗。這一行為由配置項decimal-rounding-mode或decimal-rounding-mode的Session屬性控制,其值可設為UNNECESSARY(預設值)、UP、DOWN、CEILING、FLOOR、HALF_UP、HALF_DOWN或HALF_EVEN。
通用配置屬性
通過配置下列屬性,可以將來自資料來源的資料類型映射到Trino的資料類型,以及可以在Trino中緩衝中繼資料。
屬性 | 描述 |
unsupported-type-handling | 配置如何處理不支援的資料列類型。取值如下:
|
jdbc-types-mapped-to-varchar | 允許以逗號(,)分隔的列表的資料類型映射強制轉換為無界VARCHAR。 |
case-insensitive-name-matching | 資料庫和集合名稱是否區分大小寫。取值如下:
|
case-insensitive-name-matching.cache-ttl | 不區分大小寫資料庫和集合名稱的緩衝時間。 預設值為1,單位分鐘。 |
metadata.cache-ttl | 緩衝包括表和列統計資訊在內的中繼資料的期間。 預設值0表示禁止緩衝。 |
metadata.cache-missing | 是否緩衝包括表和列統計資訊在內的中繼資料的狀態。取值如下:
|
樣本:查詢MySQL
查看RDS的資料庫。
通過SSH方式串連叢集,詳情請參見登入叢集。
執行如下命令,串連Trino用戶端。
DataLake叢集
trino --server master-1-1:9090 --catalog iceberg --schema default
Hadoop叢集或單獨的Trino叢集
trino --server emr-header-1:9090 --catalog iceberg --schema default
執行如下命令,查看Schema。
SHOW schemas FROM mysql;
說明mysql為properties設定檔的名稱。
執行如下命令,查看資料庫。
SHOW tables FROM mysql.web;
說明本文樣本中的web是您在MySQL上建立的資料庫。
查詢表資料。
查詢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()