DataWorks数据集成单表实时同步支持使用CDC数据解析组件,将来源侧消息队列(如Kafka)中Canal、Maxwell等格式的CDC数据解析还原为相应的表数据。
创建并配置CDC数据解析组件
步骤一:配置数据集成任务
-
新建数据源,详情请参见:配置数据源。
-
新建数据集成任务,详情请参见:单表实时同步任务配置。
说明当数据集成侧同步任务的同步类型为单表实时,可在数据来源组件与数据去向组件之间新增数据处理组件。详情可参见支持的数据源及同步方案。
步骤二:添加CDC数据解析组件
在单表实时同步任务中,开启数据处理开关,单击+添加节点,新增选择CDC数据解析组件。
为节点配置名称和描述信息,并配置CDC数据解析组件。
重要CDC数据解析组件适用于数据库增量变更数据已通过Canal、Maxwell等工具投递至消息队列(如Kafka)的场景。组件从指定列读取原始CDC数据,解析还原为INSERT、UPDATE、DELETE等变更记录,按CDC消息中的库名与表名写入目标端。使用该组件时,目标端表必须至少包含一个主键列,否则任务无法提交。
配置基础参数,参数说明如下:
参数
说明
数据格式
必填。选择CDC数据的格式,当前支持Canal CDC、Maxwell。
解析源端列名
必填。选择存放原始CDC数据的上游列,下拉列表仅展示上游STRING类型的列。消息队列数据源通常选择消息体列,例如Kafka的_value_列。
解析失败处理
必填。选择解析失败(例如CDC消息不是合法JSON、缺少库名或表名等)时的处理方式,取值如下:
跳过(skip):丢弃该条记录,任务继续运行。默认取值。
抛出异常(error):任务报错并终止运行。
配置库表过滤规则。
库表过滤规则用于筛选需要解析的CDC消息,仅在消息中的库名与表名均通过过滤后,该条消息才会被解析并输出至下游。Database与Table两层各需至少添加一条规则,每条规则由以下三部分组成:
组成项
说明
包含/排除
命中规则后,该条记录是被包含还是被排除。取值:包含、排除。
精确匹配/正则匹配
匹配方式。取值:精确匹配(匹配值与库名或表名完全一致)、正则匹配(匹配值为正则表达式,命中即通过)。匹配时不区分大小写。
匹配值
库名或表名。使用正则匹配时填写正则表达式。同一层内多条规则的匹配值不能重复。
配置订阅字段。
订阅字段配置区上方展示上游输出字段表格,包括字段名、数据类型与取值来源。订阅字段支持两种配置模式:
固定字段:仅解析并输出指定的字段,默认取值。支持以下两种方式获取字段:
单击获取表订阅字段,在弹窗中自动提取字段。
操作项
说明
获取CDC数据
拉取源端采样数据。需先在数据来源(如Kafka)中完成数据采样,否则无法获取。
记录切换
采样存在多条记录时,可逐条切换查看各记录的CDC消息结构。
JSON文本编辑
未进行数据采样或当前记录无法解析为JSON时,可切换至JSON文本编辑模式,手动粘贴CDC消息内容后重试。
提取的订阅字段
展示系统从CDC消息中提取的字段名与数据类型,可编辑修改,确认后填充至订阅字段列表。字段类型按取值自动推断:整数为LONG,小数为DOUBLE,布尔为BOOL,其余为STRING。
单击添加订阅字段手动添加,参数说明如下:
参数
说明
字段名
必填。订阅字段的名称,多条订阅字段的字段名不能重复。
数据类型
必填。支持STRING、LONG、DOUBLE、BYTES、BOOL。
动态字段:不指定具体字段,CDC消息中出现的字段均自动解析并输出。消息结构发生变化(例如源表新增字段)时,新增字段也会自动输出,无需重新配置。
无论使用哪种模式,均需配置重复列处理策略,即解析出的字段与记录已有字段重名时的处理方式:
策略
说明
覆盖
删除已有字段,以解析出的字段及其取值替换。
丢弃
保留已有字段,丢弃解析出的重名字段。默认取值。
报错
任务报错,停止运行。
组件解析行为
组件识别CDC消息中的事件类型(INSERT、UPDATE、DELETE),还原为对应的变更记录写入目标端。
解析后的记录按CDC消息中的库名与表名路由至下游,适用于单个Topic包含多库多表数据的同步场景。
存放原始CDC数据的列会保留在输出字段中,不会被删除。
被库表过滤规则排除的记录、DDL类型的变更消息不会输出至下游。
后续操作
完成数据来源与CDC数据解析的配置后,可单击数据输出预览,查看当前节点的输出数据结果是否符合预期。