创建DLI表关联RDS
功能描述
使用CREATE TABLE命令创建DLI表并关联RDS上已有的表。该功能支持访问RDS的MySQL集群和PostGre集群。
Spark跨源开发场景中直接配置跨源认证信息存在密码泄露的风险,优先推荐您使用DLI提供的跨源认证方式。
跨源认证简介及操作方法请参考跨源认证简介。
前提条件
创建DLI表关联RDS之前需要创建跨源连接。管理控制台操作请参考增强型跨源连接。
语法格式
1 2 3 4 5 6 7 |
CREATE TABLE [IF NOT EXISTS] TABLE_NAME USING JDBC OPTIONS ( 'url'='xx', 'driver'='DRIVER_NAME', 'dbtable'='db_name_in_RDS.table_name_in_RDS', 'passwdauth' = 'xxx', 'encryption' = 'true'); |
关键字
参数 |
描述 |
---|---|
url |
RDS的连接地址,需要先创建跨源连接,管理控制台操作请参考增强型跨源连接。 创建增强型跨源连接后,使用RDS提供的"内网域名"或者内网地址和数据库端口访问,MySQL格式为"协议头://内网IP:内网端口",PostGre格式为"协议头://内网IP:内网端口/数据库名"。 例如:"jdbc:mysql://192.168.0.193:3306"或者"jdbc:postgresql://192.168.0.193:3306/postgres"。 |
driver |
jdbc驱动类名,访问MySQL集群请填写:"com.mysql.jdbc.Driver",访问PostGre集群请填写:"org.postgresql.Driver"。 |
dbtable |
|
user |
(已废弃)RDS用户名。 |
password |
(已废弃)RDS用户名密码。 |
passwdauth |
跨源密码认证名称。跨源认证信息创建方式请参考《数据湖探索用户指南》>《跨源认证》。 |
encryption |
使用跨源密码认证时配置为“true”。 |
partitionColumn |
读取数据时,用于设置并发使用的数值型字段。
说明:
|
lowerBound |
partitionColumn设置的字段数据最小值,该值包含在返回结果中。 |
upperBound |
partitionColumn设置的字段数据最大值,该值不包含在返回结果中。 |
numPartitions |
读取数据时并发数。
说明:
实际读取数据时,会根据“lowerBound”与“upperBound”,平均分配给每个task,获取其中一部分的数据。例如: 'partitionColumn'='id', 'lowerBound'='0', 'upperBound'='100', 'numPartitions'='2' 表示在DLI中会起2个并发task,一个task执行id>=0 and id < 50,另一个task执行id >=50 and id < 100。 |
fetchsize |
读取数据时,每一批次获取数据的记录数,默认值1000。设置越大性能越好,但占用内存越多,该值设置过大会有内存溢出的风险。 |
batchsize |
写入数据时,每一批次写入数据的记录数,默认值1000。设置越大性能越好,但占用内存越多,该值设置过大会有内存溢出的风险。 |
truncate |
执行overwrite时是否不删除原表,直接执行清空表操作,取值范围:
默认为“false”,即在执行overwrite操作时,先将原表删除再重新建表。 |
isolationLevel |
事务隔离级别,取值范围:
默认值为“READ_UNCOMMITTED”。 |
注意事项
创建RDS关联表时,不需要指定关联表的Schema。DLI会自动获取RDS中对应参数"dbtable"中的表的Schema。
示例
访问MySQL
1 2 3 4 5 6 7 |
CREATE TABLE IF NOT EXISTS dli_to_rds USING JDBC OPTIONS ( 'url'='jdbc:mysql://to-rds-117405104-3eAHxnlz.datasource.com:3306', 'driver'='com.mysql.jdbc.Driver', 'dbtable'='rds_test.test1', 'passwdauth' = 'xxx', 'encryption' = 'true'); |
访问PostGre
1 2 3 4 5 6 7 |
CREATE TABLE IF NOT EXISTS dli_to_rds USING JDBC OPTIONS ( 'url'='jdbc:postgresql://to-rds-1174405119-oLRHAGE7.datasource.com:3306/postgreDB', 'driver'='org.postgresql.Driver', 'dbtable'='pg_schema.test1', 'passwdauth' = 'xxx', 'encryption' = 'true'); |