
# 配置离线处理集成作业
数据开发支持创建离线集成作业，通过在界面勾选源端数据和目的端数据，并结合为其配置的参数，实现将源端单表、分库分表、整库的全量或增量数据周期性同步至目标数据表。
本文为您介绍离线集成作业的常规配置，各数据源配置存在一定差异，请以[配置作业源端参数](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1459.html)及[配置作业目的端参数](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1460.html)为准。
#### 约束限制
同步任务源端和目标端字段类型需要注意精度，如果目标端字段类型最大值小于源端最大值（或最小值大于源端最小值，或精度低于源端精度），可能会导致写入失败或精度被截断的风险。
#### 前提条件
已完成自检，详情请参见[离线作业使用前自检](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7764.html) 。
#### 操作步骤
1. 参见[新建离线处理集成作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1458.html)创建一个离线处理集成作业。
2. 类型配置。
   图1类型配置   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001979147062.png "点击放大")
   1. 配置数据连接类型，包含配置源端数据类型和目的端数据类型，支持的数据类型请参见[各数据源的支持情况](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1457.html)。
   
   2. 选择集成作业类型。
      1. 同步类型：默认为离线，不可更改。
      
      2. 同步场景：支持单表、分库分表和整库三种同步方式，具体支持的数据源请参见[各数据源的支持情况](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1457.html)。
       
   
   3. 设置网络资源配置。
      1. 选择已创建的源端数据连接，且创建的连接必须已勾选数据集成选项。连接不存在时可参见[创建DataArts Studio数据连接](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1299.html)创建所需连接。
         需要测试数据源端和资源组之间网络是否可用，不可用时根据界面提示修改。
         
      
      2. 选择资源组，集群创建可参见[创建CDM集群](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0576.html)。
         选多个集群时系统会随机下发任务，故需要多个集群时版本规格建议选择集群版本一致的集群，否则可能因为集群版本不一致导致作业失败。
         
      
      3. 选择已创建的目的端数据连接，且创建的连接必须已勾选数据集成选项。连接不存在时可参见[创建DataArts Studio数据连接](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1299.html)。
         需要测试数据连接是否可用，不可用时根据界面提示修改。
         
       
    
3. 配置源端数据参数。
   各数据源及各同步场景配置存在一定差异，选择源端配置后，请参见[配置作业源端参数](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1459.html)配置作业参数。
   表1源端需要配置的作业参数 
   | 同步场景 | 源端需要配置参数                                                                                                                                                                                                                                       | 字段映射 |
   |:---|:---|:---|
   | 单表   | - 基本参数  - 高级属性               | 支持   |
   | 分库分表 | - 选择库表方式：精准匹配或正则匹配  - 高级属性    | 支持   |
   | 整库迁移 | - 添加源数据，选择需要迁移的库表  - 高级属性   | 不支持  |
      
   
4. 配置目的端数据参数。
   各数据源及各同步场景配置存在一定差异，选择目的端配置后，请参见[配置作业目的端参数](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1460.html)配置作业参数。
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   同步任务源端和目标端字段类型需要注意精度，如果目标端字段类型最大值小于源端最大值（或最小值大于源端最小值，或精度低于源端精度），可能会导致写入失败或精度被截断的风险。
   表2目的端需要配置的作业参数 
   | 同步场景 | 目的端需要配置参数                                                                                                                                                                                                                                 | 字段映射 |
   |:---|:---|:---|
   | 单表   | - 基本参数  - 高级属性   | 支持   |
   | 分库分表 | - 基本参数  - 高级属性         | 支持   |
   | 整库迁移 | 选择库匹配策略和表匹配策略                                                                                                                                                                                                                             | 不支持  |
      
   
5. 配置字段映射关系。 配置作业源端参数和目的端参数后，需要配置源端和目的端列的映射关系，配置字段映射关系后，任务将根据字段映射关系，将源端字段写入目标端对应类型的字段中。
   1. 字段映射配置：选择字段映射关系、设置字段批量映射规则。
      ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001992884397.png)
      - 字段映射关系
        - 同名映射：对字段名称相同的字段进行映射。使用已有数据进行相同列名的字段自动映射。
        
        - 同行映射：源表和目标表的字段名称不一致，但字段对应相同行的数据进行映射。查询源端和目的端的字段，再进行相同行的字段自动映射。
         
      
      - 字段批量映射：源端配置使用SQL语句为是时，不显示该参数。 批量输入字段映射数据，一行输入一个字段映射，等号左边为源表字段右边为目标表字段，例如：reader_column=writer_column。
        单击"查看编辑"，设置批量映射关系。
        
        
   
   2. 字段映射关系：支持批量转换，添加字段，行移动等功能。 ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001992724605.png "点击放大")
      - 敏感信息检测：检测来源端数据是否包含敏感信息，存在敏感信息时无法进行数据迁移，需根据界面提示修改。
      
      - 批量转换器：批量转换源字段名。 勾选需要转换的字段名，单击"批量转换器"，在弹出的转换器列表对话框中根据提示新建转换器。
        
      
      - 批量移除字段：源端配置使用SQL语句为是时不显示该参数，勾选需要移除的字段名，单击"批量移除字段"。 已移除的字段可以在添加字段里的"添加被移除的字段"中看到。
        
      
      - 添加字段：源端配置使用SQL语句为是时不显示该参数。可以为源端和目的端添加新的字段。包含添加已被移除的字段和添加新字段。 添加新字段支持以下类型：
        - 支持函数，例如mysql填写now()、curdate()；postgresql支持填写now()、transaction_timestamp()。
        
        - 支持函数配合关键字，例如postgresql填写to_char(current_date,'yyyy-MM-dd')。
        
        - 支持填写固定值，例如：123、'123'，这两种填法都代表字符串：123。
        
        - 支持填写变量值，例如：${workDate}，workDate需要在作业变量中进行定义。
        
        - JDBC支持填写固定变量，例如：DB_NAME_SRC（原始数据库名称）、TABLE_NAME_SRC（源端表名称）、DATASOURCE_NAME_SRC（源端数据源名称）。
        
        - 支持as语句，例如：'123' as test， now() as curTime。
         
      
      - 行移动：源端配置使用SQL语句为是时，在设置字段映射关系阶段不支持该功能。鼠标拖住需要移动的字段所在行，可以任意移动上下位置。
      
      - 查看转换器：（可选）CDM支持字段内容转换，如果需要可单击操作列下![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001956005264.png)，进入转换器列表界面，再单击"新建转换器"。转换器使用详情请参见[字段转换器配置指导](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1501.html)。
      
      - 查找目的端字段：CDM支持搜索查找目的端字段名并匹配字段，如果需要可单击操作列下![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001992884401.png)，进入匹配目的字段对话框，通过搜索关键字或者直接单击目标进行匹配。
      
      - 删除字段：CDM支持删除原有表的默认字段，如果需要可单击操作列下![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001992724609.png)删除字段，已移除的字段可以在添加字段里的"添加被移除的字段"中看到。
      
      - 字段映射样例：源端配置使用SQL语句为是时不显示该参数，查看源端和目的端样例数据。
      
      
      ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
      - 文件类数据源（FTP/SFTP/HDFS/OBS）之间相互迁移数据，且源端"文件格式"配置为"二进制格式"（即不解析文件内容直接传输），没有字段映射这一步骤。
      
      - 整库迁移没有配置字段映射关系这一步骤。
      
      - 迁移过程中可能存在源端与目标端字段类型不匹配，产生脏数据，导致数据无法正常写入目标端，迁移过程中关于脏数据的容忍条数，请参考下一步任务属性进行配置。
      
      - 当源端某字段未与目标端字段进行映射时，源端该字段数据将不会同步到目标端。
      
      - 其他场景下，CDM会自动匹配源端和目的端数据表字段，需用户检查字段映射关系和时间格式是否正确，例如：源字段类型是否可以转换为目的字段类型。
      
      - 如果字段映射关系不正确，用户可以通过拖拽字段来调整映射关系（源端配置使用SQL语句为否时支持该功能）。
      
      - 如果在字段映射界面，CDM通过获取样值的方式无法获得所有列，则可以单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001956005268.png)自定义新增字段，也可单击操作列下![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001992884405.png)创建字段转换器，确保导入到目的端的数据完整。
      
      - 支持通过字段映射界面的![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001992724613.png)，可自定义添加常量、变量及表达式。
      
      - 列名仅支持源端为OBS数据源，迁移CSV文件时配置"解析首行为列名"参数为"是"时显示。
      
      - SQLServer作为目的端数据源时，不支持timestamp类型字段的写入，需修改为其他时间类型字段写入（如datetime）。
      
      - 如果是导入到数据仓库服务（DWS），则还需在目的字段中选择分布列，建议按如下顺序选取分布列：
        1. 有主键可以使用主键作为分布列。
        
        2. 多个数据字段联合做主键的场景，建议设置所有主键作为分布列。
        
        3. 在没有主键的场景下，如果没有选择分布列，DWS会默认第一列作为分布列，可能会有数据倾斜风险。
         
        
   
   
   
   
6. 配置任务属性。 通过任务配置，控制数据同步过程的相关属性，具体请参见[表3]。
    表3任务配置参数 
   | 参数            | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 取值样例           |
   |:---|:---|:---|
   | 作业期望最大并发数     | 设置当前作业从源端并行读取或并行写入目标端的最大线程数，由于分片策略等原因，实际运行过程中的并发线程数可能小于此值。 其中，集群最大并发数的设置与CDM集群规格有关，并发数上限建议配置为vCPU核数\*2。 例如8核16GB规格集群的最大抽取并发数上限为16。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | 3              |
   | 分片重试次数        | 每个分片执行失败时的重试次数，为0表示不重试。 说明： 目前仅对目的端为Hudi、DWS，导入模式为UPSERT生效，其他场景及配置分片重试次数不生效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 0              |
   | 是否写入脏数据       | 选择是否记录脏数据，默认不记录脏数据，当脏数据过多时，会影响同步任务的整体同步速度。 - 否：默认为否，不记录脏数据。 表示不允许脏数据存在。如果同步过程中产生脏数据，任务将失败退出。   - 是：允许脏数据，即任务产生脏数据时不影响任务执行。 允许脏数据并设置其阈值时： - 若产生的脏数据在阈值范围内，同步任务将忽略脏数据（即不会写入目标端），并正常执行。  - 若产生的脏数据超出阈值范围，同步任务将失败退出。   说明： - 脏数据功能仅用于任务容错处理。 当脏数据量过大时，将影响作业整体运行性能。建议结合业务实际场景，合理配置脏数据阈值范围。   - 脏数据认定标准：脏数据是对业务没有意义，格式非法或者同步过程中出现问题的数据；单条数据写入目标数据源过程中发生了异常，则此条数据为脏数据。 因此只要是写入失败的数据均被归类于脏数据。 例如，源端是VARCHAR类型的数据写到INT类型的目标列中，则会因为转换不合理导致脏数据不会成功写入目的端。用户可以在同步任务配置时，配置同步过程中是否写入脏数据，配置脏数据条数（单个分片的最大错误记录数）保证任务运行，即当脏数据超过指定条数时，任务失败退出。       | 否              |
   | 脏数据写入连接       | 当"是否写入脏数据"为"是"才显示该参数。 脏数据要写入的连接，目前只支持写入到OBS连接。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | obslink        |
   | OBS桶          | 当"脏数据写入连接"为OBS类型的连接时，才显示该参数。 写入脏数据的OBS桶的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | dirtydata      |
   | 脏数据目录         | "是否写入脏数据"选择为"是"时，该参数才显示。 OBS上存储脏数据的目录，只有在配置了脏数据目录的情况下才会记录脏数据。 用户可以进入脏数据目录，查看作业执行过程中处理失败的数据或者被清洗过滤掉的数据，针对该数据可以查看源数据中哪些数据不符合转换、清洗规则。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | /user/dirtydir |
   | 单个分片的最大错误记录数  | 当"是否写入脏数据"为"是"才显示该参数。 单个分区的错误记录超过设置的最大错误记录数则任务自动结束，已经导入的数据不支持回退。 推荐使用临时表作为导入的目标表，待导入成功后再改名或合并到最终数据表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 0              |
   | 开启限速          | 是否开启同步限速。该速率代表CDM传输速率，而非网卡流量。 - 限速：用户可以通过限速控制同步速率，可以保护读取端数据库，避免抽取速度过大，给源库造成太大的压力。限速最小配置为1MB/S。  - 不限速：在不限速的情况下，任务将在所配置的并发数的限制基础上，提供现有硬件环境下最大的传输性能。   说明： - 支持对\\DLI\\关系数据库\\OBS\\Apache HDFS作为目的端的作业进行单并发限速。  - 如果作业配置多并发则实际限制速率需要乘以并发数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 是              |
   | 单并发速率上限（MB/s） | 开启限速情况下设置的单并发速率上限值，如果配置多并发则实际速率限制需要乘以并发数。限制速率为大于1的整数，单位：MB/s。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 10             |
   | 单并发行数速率上限     | 设置单并发行数速率上限，单位：record/s。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 100000         |
   | 中间队列缓存大小      | 数据写入时中间队列缓存大小，取值范围为1-500。 如果单行数据超过该值，可能会导致迁移失败。 如果该值设置过大时，可能会影响集群正常运行。 请酌情设置，无特殊场景请使用默认值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | 64             |
   | 实时检测作业敏感信息    | 是否开启了实时检测作业敏感信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 否              |
      
   
7. 保存作业。 作业配置完毕后，单击作业开发页面左上角"保存"按钮，保存作业的配置信息。
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001976029069.png "点击放大")
   作业如果开启了实时检测作业敏感信息，系统会自动检测来源端数据是否包含敏感信息，存在敏感信息时无法进行数据迁移，须根据界面提示修改。
   保存后，在右侧的版本里面，会自动生成一个保存版本，支持版本回滚。保存版本时，一分钟内多次保存只记录一次版本。对于中间数据比较重要时，可以通过"新增版本"按钮手动增加保存版本。
   
8. 测试运行作业。
   作业配置完毕后，单击作业开发页面左上角"测试运行"按钮，测试作业。如果测试未通过，请您查看作业节点的运行日志，进行定位处理。
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   - 测试运行类似于单次运行，会对数据进行真实迁移。
   
   - 用户可以查看该作业的测试运行日志，单击"查看日志"可以进入查看日志界面查看日志的详细信息记录。
   
   - 作业未提交版本之前，进行手动测试运行，作业监控里面的作业运行实例版本显示是0。
     
9. 提交作业版本。 若任务需要进行周期性调度运行，您需要将任务发布至生产环境。关于任务发布，详情请参见：[发布作业任务](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1903.html)。
   图2提交作业   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002434831582.png "点击放大")
   
   
10. 调度作业。 对已编排好的作业设置调度方式。关于调度作业，详情请参见：[调度作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0470.html)。
    
 
