创建DLI表关联DWS
功能描述
使用CREATE TABLE命令创建DLI表并关联DWS上已有的表。
Spark跨源开发场景中直接配置跨源认证信息存在密码泄露的风险,优先推荐您使用DLI提供的跨源认证方式。
跨源认证简介及操作方法请参考跨源认证简介。
前提条件
创建DLI表关联DWS之前需要创建跨源连接。管理控制台操作请参考增强型跨源连接。
语法格式
1 2 3 4 5 6 |
CREATE TABLE [IF NOT EXISTS] TABLE_NAME USING JDBC OPTIONS ( 'url'='xx', 'dbtable'='db_name_in_DWS.table_name_in_DWS', 'passwdauth' = 'xxx', 'encryption' = 'true'); |
关键字
参数 |
描述 |
---|---|
url |
DWS的连接地址,需要先创建跨源连接,管理控制台操作请参考增强型跨源连接。 创建增强型跨源连接后,可以使用DWS提供的"JDBC连接字符串(内网)",或者内网地址和内网端口访问,格式为"协议头://内网IP:内网端口/数据库名",例如:"jdbc:postgresql://192.168.0.77:8000/postgres"。
说明:
DWS的连接地址格式为:"协议头://访问地址:访问端口/数据库名" 例如: jdbc:postgresql://to-dws-1174405119-ihlUr78j.datasource.com:8000/postgres 如果想要访问DWS中自定义数据库,请在这个连接里将"postgres"修改为对应的数据库名字。 |
dbtable |
指定在DWS关联的表名,或者"模式名.表名",例如:public.table_name。 |
user |
(已废弃)DWS的用户名。 |
password |
(已废弃)DWS集群的用户密码。 |
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”。 |
注意事项
创建DWS关联表时,不需要指定关联表的Schema。DLI会自动获取DWS中对应参数"dbtable"中的表的Schema。
示例
1 2 3 4 5 6 |
CREATE TABLE IF NOT EXISTS dli_to_dws USING JDBC OPTIONS ( 'url'='jdbc:postgresql://to-dws-1174405119-ih1Ur78j.datasource.com:8000/postgres', 'dbtable'='test_dws', 'passwdauth' = 'xxx', 'encryption' = 'true'); |