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