更新时间:2024-10-18 GMT+08:00

配置离线处理集成作业

数据集成支持创建离线作业,通过在界面勾选源端数据和目的端数据,并结合为其配置的参数,实现将源端单表、分库分表、整库的全量或增量数据周期性同步至目标数据表。

本文为您介绍离线同步任务的常规配置,各数据源配置存在一定差异,请以配置作业源端参数配置作业目的端参数为准。

约束限制

需要源端和目的端字段类型及精度设置一致,否则可能导致作业运行失败。

同步任务源端和目标端字段类型需要注意精度,如果目标端字段类型最大值小于源端最大值(或最小值大于源端最小值,或精度低于源端精度),可能会导致写入失败或精度被截断的风险。

前提条件

  • 已完成数据连接的创建,且创建的连接必须已勾选数据集成选项,详情请参见创建DataArts Studio数据连接
  • 存在正在运行的CDM集群,详情请参见创建CDM集群

    DataArts Studio实例中已经包含一个CDM集群(试用版除外),如果该集群已经满足需求,您无需再购买数据集成增量包,可以跳过这部分内容。如果您需要再创建新的CDM集群,请参考购买批量数据迁移增量包,完成购买数据集成增量包的操作。

  • CDM集群与待同步数据源可以正常通信。
    • 当CDM集群与其他云服务所在的区域、VPC、子网、安全组一致时,可保证CDM集群与其他云服务内网互通,无需专门打通网络。
    • 当CDM集群与其他云服务所在的区域和VPC一致、但子网或安全组不一致时,需配置路由规则及安全组规则以打通网络。配置路由规则请参见如何配置路由规则章节,配置安全组规则请参见如何配置安全组规则章节。
    • 当CDM集群与其他云服务所在的区域一致、但VPC不一致时,可以通过对等连接打通网络。配置对等连接请参见如何配置对等连接章节。

      注:如果配置了VPC对等连接,可能会出现对端VPC子网与CDM管理网重叠,从而无法访问对端VPC中数据源的情况。推荐使用公网做跨VPC数据迁移,或联系管理员在CDM后台为VPC对等连接添加特定路由。

    • 当CDM集群与其他云服务所在的区域不一致时,则需要通过公网或者专线打通网络。通过公网互通时,需确保CDM集群已绑定EIP、CDM云上安全组出方向放通云下数据源所在的主机、数据源所在的主机可以访问公网且防火墙规则已开放连接端口。
    • 另外,如果创建了企业项目,则企业项目也会影响CDM集群与其他云服务的网络互通,只有企业项目一致的云服务才能打通网络。

操作步骤

  1. 参见新建离线处理集成作业创建一个离线处理集成作业。
  2. 类型配置。
    图1 类型配置
    1. 配置数据连接类型,包含配置源端数据类型和目的端数据类型,支持的数据类型请参见支持的数据源
    2. 选择集成作业类型。
      1. 同步类型:默认为离线,不可更改。
      2. 同步场景:支持单表、分库分表和整库三种同步方式,具体支持的数据源请参见支持的数据源
    3. 设置网络资源配置。
      1. 选择已创建的源端数据连接,且创建的连接必须已勾选数据集成选项。连接不存在时可参见创建DataArts Studio数据连接创建所需连接。

        需要测试数据源端和资源组之间网络是否可用,不可用时根据界面提示修改。

      2. 选择资源组,集群创建可参见创建CDM集群

        选多个集群时系统会随机下发任务,故需要多个集群时版本规格建议选择集群版本一致的集群,否则可能因为集群版本不一致导致作业失败。

      3. 选择已创建的目的端数据连接,且创建的连接必须已勾选数据集成选项。连接不存在时可参见创建DataArts Studio数据连接

        需要测试数据连接是否可用,不可用时根据界面提示修改。

  3. 配置源端数据参数。
    各数据源及各同步场景配置存在一定差异,选择源端配置后,请参见配置作业源端参数配置作业参数。
    表1 源端需要配置的作业参数

    同步场景

    源端需要配置参数

    字段映射

    单表

    • 基本参数
    • 高级属性

    支持

    分库分表

    • 选择库表方式:精准匹配或正则匹配
    • 高级属性

    支持

    整库迁移

    • 添加源数据,选择需要迁移的库表
    • 高级属性

    不支持

  4. 配置目的端数据参数。
    各数据源及各同步场景配置存在一定差异,选择目的端配置后,请参见配置作业目的端参数配置作业参数。
    表2 目的端需要配置的作业参数

    同步场景

    目的端需要配置参数

    字段映射

    单表

    • 基本参数
    • 高级属性

    支持

    分库分表

    • 基本参数
    • 高级属性

    支持

    整库迁移

    选择库匹配策略和表匹配策略

    不支持

  5. 配置字段映射关系。

    配置作业源端参数和目的端参数后,需要配置源端和目的端列的映射关系,配置字段映射关系后,任务将根据字段映射关系,将源端字段写入目标端对应类型的字段中。

    1. 字段映射配置:选择字段映射关系、设置字段批量映射规则。
      • 字段映射关系
        • 同名映射:对字段名称相同的字段进行映射。使用已有数据进行相同列名的字段自动映射。
        • 同行映射:源表和目标表的字段名称不一致,但字段对应相同行的数据进行映射。查询源端和目的端的字段,再进行相同行的字段自动映射。
      • 字段批量映射:源端配置使用SQL语句为是时不显示该参数。

        批量输入字段映射数据,一行输入一个字段映射,等号左边为源表字段右边为目标表字段,例如:reader_column=writer_column。

        单击“查看编辑”,设置批量映射关系。

    2. 字段映射关系:支持批量转换,添加字段,行移动等功能。

      • 批量转换器:批量转换源字段名。

        勾选需要转换的字段名,单击“批量转换器”,在弹出的转换器列表对话框中根据提示新建转换器。

        批量移除字段:源端配置使用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支持字段内容转换,如果需要可单击操作列下,进入转换器列表界面,再单击“新建转换器”。转换器使用详情请参见字段转换器配置指导
      • 查找目的端字段:CDM支持搜索查找目的端字段名并匹配字段,如果需要可单击操作列下,进入匹配目的字段对话框,通过搜索关键字或者直接单击目标进行匹配。
      • 删除字段:CDM支持删除原有表的默认字段,如果需要可单击操作列下删除字段,已移除的字段可以在添加字段里的“添加被移除的字段”中看到。
      • 字段映射样例:源端配置使用SQL语句为是时不显示该参数,查看源端和目的端样例数据。
      • 文件类数据源(FTP/SFTP/HDFS/OBS)之间相互迁移数据,且源端“文件格式”配置为“二进制格式”(即不解析文件内容直接传输),没有字段映射这一步骤。

        整库迁移没有配置字段映射关系这一步骤。

      • 迁移过程中可能存在源端与目标端字段类型不匹配,产生脏数据,导致数据无法正常写入目标端,迁移过程中关于脏数据的容忍条数,请参考下一步任务属性进行配置。
      • 当源端某字段未与目标端字段进行映射时,源端该字段数据将不会同步到目标端。
      • 其他场景下,CDM会自动匹配源端和目的端数据表字段,需用户检查字段映射关系和时间格式是否正确,例如:源字段类型是否可以转换为目的字段类型。
      • 如果字段映射关系不正确,用户可以通过拖拽字段来调整映射关系(源端配置使用SQL语句为否时支持该功能)。
      • 如果在字段映射界面,CDM通过获取样值的方式无法获得所有列,则可以单击自定义新增字段,也可单击操作列下创建字段转换器,确保导入到目的端的数据完整。
      • 支持通过字段映射界面的,可自定义添加常量、变量及表达式。
      • 列名仅支持源端为OBS数据源,迁移CSV文件时配置“解析首行为列名”参数为“是”时显示。
      • SQLServer作为目的端数据源时,不支持timestamp类型字段的写入,需修改为其他时间类型字段写入(如datatime)。
      • 如果是导入到数据仓库服务(DWS),则还需在目的字段中选择分布列,建议按如下顺序选取分布列:
        1. 有主键可以使用主键作为分布列。
        2. 多个数据段联合做主键的场景,建议设置所有主键作为分布列。
        3. 在没有主键的场景下,如果没有选择分布列,DWS会默认第一列作为分布列,可能会有数据倾斜风险。

  6. 配置任务属性。

    通过任务配置,控制数据同步过程的相关属性,具体请参见表3

    表3 任务配置参数

    参数

    说明

    取值样例

    抽取并发数

    配置作业抽取并发数,控制将CDM作业拆分为多个Task。

    CDM通过数据迁移作业,将源端数据迁移到目的端数据源中。其中,主要运行逻辑如下:
    1. 数据迁移作业提交运行后,CDM会根据作业配置中的“抽取并发数”参数,将每个作业拆分为多个Task,即作业分片。
      说明:

      不同源端数据源的作业分片维度有所不同,因此某些作业可能出现未严格按作业“抽取并发数”参数分片的情况。

    2. CDM依次将Task提交给运行池运行。根据集群配置管理中的“最大抽取并发数”参数,超出规格的Task排队等待运行。

    因此作业抽取并发数和集群最大抽取并发数参数设置为适当的值可以有效提升迁移速度。

    作业抽取并发数的配置原则如下:

    1. 迁移的目的端为文件时,CDM不支持多并发,此时应配置为单进程抽取数据。
    2. 表中每行数据大小为1MB以下的可以设置多并发抽取,超过1MB的建议单线程抽取数据。
    3. 作业抽取并发数可参考集群最大抽取并发数配置,但不建议超过集群最大抽取并发数上限。
    4. 目的端为DLI数据源时,抽取并发数建议配置为1,否则可能会导致写入失败。

    其中,集群最大抽取并发数的设置与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。
    • 不限速:在不限速的情况下,任务将在所配置的并发数的限制基础上,提供现有硬件环境下最大的传输性能。
    说明:
    • 支持对MRS Hive\DLI\关系数据库\OBS\Apache HDFS作为目的端的作业进行单并发限速。
    • 如果作业配置多并发则实际限制速率需要乘以并发数。

    单并发速率上限(MB/s)

    开启限速情况下设置的单并发速率上限值,如果配置多并发则实际速率限制需要乘以并发数。

    说明:

    限制速率为大于1的整数。

    10

  7. 保存作业。

    作业配置完毕后,单击作业开发页面左上角“保存”按钮,保存作业的配置信息。

    保存后,在右侧的版本里面,会自动生成一个保存版本,支持版本回滚。保存版本时,一分钟内多次保存只记录一次版本。对于中间数据比较重要时,可以通过“新增版本”按钮手动增加保存版本。

  8. 测试运行作业。
    作业配置完毕后,单击作业开发页面左上角“测试运行”按钮,测试作业。如果测试未通过,请您查看作业节点的运行日志,进行定位处理。
    • 测试运行类似于单次运行,会对数据进行真实迁移。
    • 用户可以查看该作业的测试运行日志,单击“查看日志”可以进入查看日志界面查看日志的详细信息记录。
    • 作业未提交版本之前,进行手动测试运行,作业监控里面的作业运行实例版本显示是0。
  9. 提交作业版本。

    若任务需要进行周期性调度运行,您需要将任务发布至生产环境。关于任务发布,详情请参见:发布作业任务

  10. 调度作业。

    对已编排好的作业设置调度方式。关于调度作业,详情请参见:调度作业