使用MySQL连接器能够让您在外部MySQL实例中查询和创建表。该连接器可以用于不同系统(例如,MySQL和Hive),或者两个不同MySQL实例间的数据进行JOIN操作。
背景信息
前提条件
- 已创建DataLake集群或Hadoop集群,并选择了Presto服务,或者创建单独的Presto集群,详情请参见 创建集群 。
- 已购买RDS,详情请参见 创建RDS MySQL实例 。
使用限制
- EMR-3.38.0及后续版本的Hadoop集群或Presto集群,支持配置MySQL连接器。
- 连接的MySQL需要是5.7、8.0版本或更高的版本。
- Presto的Coordinator和所有Worker节点必须能够访问MySQL,默认端口为3306。
-
暂不支持下列SQL命令:
- DELETE
- GRANT
- REVOKE
- SHOW GRANTS
- SHOW ROLES
- SHOW ROLE GRANTS
配置MySQL连接器
修改MySQL连接器配置,详情请参见 配置连接器 。
连接器默认配置
参数 | 描述 |
---|---|
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 ,Presto会使用该文件配置的连接器创建一个名为 sales 的Catalog。
配置示例
-
在EMR控制台的Presto服务的配置页面,在
服务配置
区域的
mysql.properties
页签中,修改配置
connection-user
、
connection-password
和
connection-url
。
您可以单击上方的 新增配置项 ,添加您需要的配置项,详情请参见 添加配置项 。
-
保存配置。
- 在 服务配置 ,单击 保存 。
- 在弹出的对话框中,输入 执行原因 ,单击 保存 。
-
重启服务。
- 在右上角选择 。
- 在弹出的对话框中,输入 执行原因 ,单击 确定 。
- 在 确认 对话框中,单击 确定 。
类型映射
DECIMAL类型处理
精度超过38位的DECIMAL类型可以通过设定配置项 decimal_mapping 或将 decimal_mapping 的Session属性设为 allow_overflow 来映射到Presto的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。
通用配置属性
属性 | 描述 |
---|---|
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的数据库。
-
查询表数据。
-
查询
mysql.web.clicks
表的数据。
select * from mysql.web.clicks
-
查询
mysql.web.clicks
表的列信息。
或者使用以下命令查询表的列信息。show columns from mysql.web.clicks;
describe mysql.web.clicks;
-
查询
mysql.web.clicks
表的数据。
下推(Pushdown)
Pushdown详细信息,请参见Presto官网文档 Pushdown 。
-
算子
- Join
- Limit
- Top-N
-
函数
- avg()
- count()
- max()
- min()
- sum()
- stddev()
- stddev_pop()
- stddev_samp()
- variance()
- var_pop()
- var_samp()