
# 创建DLI表关联DWS
#### 功能描述
使用CREATE TABLE命令创建DLI表并关联DWS上已有的表。
![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
Spark跨源开发场景中直接配置跨源认证信息存在密码泄露的风险，优先推荐您使用DLI提供的跨源认证方式。
跨源认证简介及操作方法请参考[跨源认证简介](https://support.huaweicloud.com/usermanual-dli/dli_01_0561.html)。
#### 前提条件
创建DLI表关联DWS之前需要创建跨源连接。管理控制台操作请参考[增强型跨源连接](https://support.huaweicloud.com/usermanual-dli/dli_01_0426.html)。
#### 语法格式
```
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');
```
#### 关键字
表1CREATE TABLE关键字说明 
| **参数**          | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|
| url             | DWS的连接地址，需要先创建跨源连接，管理控制台操作请参考[增强型跨源连接](https://support.huaweicloud.com/usermanual-dli/dli_01_0426.html)。 创建经典型跨源连接后，使用经典型跨源连接中返回的连接地址。 创建增强型跨源连接后，可以使用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      | 跨源密码认证名称。跨源认证信息创建方式请参考《数据湖探索用户指南》\>《[跨源认证](https://support.huaweicloud.com/usermanual-dli/dli_01_0427.html)》。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| encryption      | 使用跨源密码认证时配置为"true"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| partitionColumn | 读取数据时，用于设置并发使用的数值型字段。 说明： - "partitionColumn"、"lowerBound"、"upperBound"、"numPartitions"四个参数必须同时设置，不支持仅设置其中某一个或某几个。  - 为了提升并发读取的性能，建议使用自增列。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 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时是否不删除原表，直接执行清空表操作，取值范围： - true  - false   默认为"false"，即在执行overwrite操作时，先将原表删除再重新建表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| isolationLevel  | 事务隔离级别，取值范围： - NONE  - READ_UNCOMMITTED  - READ_COMMITTED  - REPEATABLE_READ  - SERIALIZABLE   默认值为"READ_UNCOMMITTED"。 |
   
#### 注意事项
创建DWS关联表时，不需要指定关联表的Schema。DLI会自动获取DWS中对应参数"dbtable"中的表的Schema。
#### 示例
```
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');
```
