DataWorks的离线同步节点提供读取(Reader)和写入(Writer)插件,简化了从源数据库到目标数据库的数据迁移过程。您可以在可视化界面配置数据源与目标源,结合DataWorks的调度能力,实现全量或增量数据同步。本文将以MaxCompute作为源数据库,Hologres作为目标数据库,为您介绍如何使用离线同步节点完成数据同步。
前提条件
(可选,RAM账号需要)进行任务开发的RAM账号已被添加至对应工作空间中,并具有开发或空间管理员(权限较大,谨慎添加)角色权限,添加成员的操作详情请参见为工作空间添加空间成员。
说明如果您使用的是主账号,则可忽略该添加操作。
已开发创建项目工作区。
已在DataWorks配置MaxCompute数据源、Hologres数据源并通过连通性测试,详情请参见创建并管理数据源。
说明离线同步节点支持多种数据源,详情请参见支持的数据源列表。
已创建离线同步节点。
使用限制
DataWorks的离线同步暂不支持跨时区同步数据。如果数据同步任务中的数据源与使用的DataWorks资源组不在同一个时区,则会导致同步的数据有误。
操作步骤
在离线同步节点编辑页面,执行如下开发操作。
网络与资源配置
按照以下顺序,依次完成数据来源、来源数据源名称、资源组配置、数据去向、去向数据源名称的信息配置,并保证数据来源:可连通。
在配置离线任务向导页面,您可根据以下不同方式来配置离线同步任务。
说明通常推荐使用直观简便的向导模式进行配置。如果数据源不支持通过向导模式来配置任务,您可以选择使用页面上方的脚本模式手动编辑和配置离线同步任务。
向导模式
数据来源与去向配置
在配置数据来源与去向对话框中,您可以根据实际需求设置以下参数:
参数
数据来源
数据去向
Tunnel资源组
通常是系统提供的一个默认资源组
公共传输资源
,您也可以单击新购买来获取并使用更多资源。无
schema/Schema
默认
default
。您可选择已创建的schema信息。
默认
public
。您可选择已创建的Schema信息。
表
您所创建的数据来源表。
您所创建的数据去向表。
过滤方式
存在两种过滤方式:
分区过滤是通过指定数据存储的特定分区来筛选数据,通常用于数据开发中按时间或其他维度划分的数据。
数据过滤是根据具体的条件(如SQL查询中的WHERE子句)来筛选出符合条件的数据记录。
无
分区过滤
过滤方式为分区过滤时,您可通过指定数据存储的特定分区来筛选数据。
无
数据过滤
过滤方式为数据过滤时,您可在此处配置where条件对数据进行过滤处理。
无
分区信息
过滤方式为分区过滤时,您可以配置相应的参数。系统会自动扫描并显示您创建的源表中的分区信息。如果需要设置多个分区过滤条件,您可以在分区信息配置中添加分区,并为每个分区配置具体的过滤条件。
如果去向表为分区表时,系统会自动扫描出分区信息,您可在此添加并设置分区数据写入条件。
如果去向表不是分区表,则默认情况下无分区信息。
分区不存在时
过滤方式为分区过滤时,您可以配置相应的参数。当所在分区不存在时,您可设定任务执行出错或者忽略不存在分区,任务正常执行。
无
写入冲突策略
无
写入冲突策略分为三种:
更新(Replace):目标表中存在与源数据相同的主键或唯一键记录,则替换这些记录;如果不存在,则插入新的记录。
忽略(Ignore):如果目标表中存在与源数据相同的主键或唯一键记录,则忽略这些源数据,不进行任何操作。
更新(Update):目标表中存在与源数据相同的主键或唯一键记录,则更新这些记录;
同步前是否要清空Hologres表
无
您可根据业务需求选择清空目标表或不清空目标表。
最大连接数
无
JDBC使用的最大连接数。
最大连接数仅在写入模式为SQL(INSERT INTO)下生效。
在开启任务时请确保Hologres实例有充足的空闲连接。
说明一个任务最多使用9个连接。
字段映射配置
您可以在字段映射编辑页面单击增加一行来添加新的映射关系。同时,您也可以在连接线位置对现有的映射关系进行删除或修改。
通道控制配置
您可根据业务实际情况,在通道控制对话框设置通道的控制参数。
说明任务期望最大并发数大于等于8个才能开启分布式处理能力。
脚本模式
您可参见以下示例脚本信息,配置离线同步节点任务。
{ "transform": false, "type": "job", "version": "2.0", "steps": [ { "stepType": "odps",//来源数据类型 "parameter": { "schema": "default", "partition": [ "year=${bizdate},month=" ], "datasource": "来源数据源", "envType": 1, "successOnNoPartition": false, "tunnelQuota": "default", "isSupportThreeModel": true, "column": [ "字段1", "字段2", "字段3", "字段4", "字段..." ], "tableComment": "", "enableWhere": false, "table": "来源表" }, "name": "Reader", "category": "reader" }, { "stepType": "holo",//去向数据类型 "parameter": { "selectedDatabase": "public", "maxConnectionCount": 9, "partition": "order_month=${bizdate}", "truncate": "false", "datasource": "去向数据源", "conflictMode": "ignore", "envType": 1, "column": [ "字段1", "字段2", "字段3", "字段4", "字段..." ], "tableComment": "", "table": "目标表" }, "name": "Writer", "category": "writer" }, { "name": "Processor", "stepType": null, "category": "processor", "copies": 1, "parameter": { "nodes": [], "edges": [], "groups": [], "version": "2.0" } } ], "setting": { "executeMode": null, "failoverEnable": null, "errorLimit": { "record": "0" }, "speed": { "concurrent": 2, "throttle": false } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }
完成离线同步任务配置后,单击保存离线同步任务。
如需定期执行离线同步任务,请根据业务需求配置调度信息。
离线同步任务配置完成后,需对离线同步任务进行发布。
离线同步任务发布后,您可以在运维中心查看周期任务的运行情况。详情请参见运维中心入门。