使用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()