Apache SeaTunnel 如何将 CDC 数据流转换为 Append-Only 模式?
RowKindExtractor 是 Apache SeaTunnel 的一个转换插件,它能将 CDC 数据流转为 Append-Only 模式,并提取原始 RowKind 信息为新字段。本文将介绍 RowKindExtractor 的核心功能,其在 CDC 数据同步场景下的使用方法,以及配置选项、注意事项及多种应用示例。
RowKindExtractor
RowKindExtractor 转换插件用于将 CDC(Change Data Capture)数据流转换为 Append-Only(仅追加)模式,同时将原始的 RowKind 信息提取为一个新的字段。
核心功能:
将所有数据行的 RowKind 统一改为 +I(INSERT),实现 Append-Only 模式
将原始的 RowKind 信息(INSERT、UPDATEBEFORE、UPDATEAFTER、DELETE)保存到新增的字段中
支持短格式和完整格式两种输出方式
为什么需要这个插件?
在 CDC 数据同步场景中,数据行带有 RowKind 标记(+I、-U、+U、-D),表示不同的变更类型。但某些下游系统(如数据湖、分析系统)只支持 Append-Only 模式,不支持 UPDATE 和 DELETE 操作。此时需要:
将所有数据转换为 INSERT 类型(Append-Only)
将原始的变更类型保存为普通字段,供后续分析使用
转换示例:
典型应用场景:
将 CDC 数据写入只支持 Append 的数据湖
需要在数据仓库中保留完整的变更历史记录
需要对不同类型的变更进行统计分析
配置选项
customfieldname [string]
指定新增字段的名称,该字段用于存储原始的 RowKind 信息。
默认值:row_kind
注意事项:
字段名不能与原有字段重名,否则会报错
建议使用有意义的名称,如 operationtype、changetype、cdc_op 等
示例:
transform_type [enum]
指定 RowKind 字段值的输出格式。
可选值:
默认值:SHORT
各值含义:
选择建议:
SHORT 格式:节省存储空间,适合对存储敏感的场景
FULL 格式:可读性更好,适合需要人工查看或分析的场景
示例:
完整示例
示例 1:使用默认配置(SHORT 格式)
使用默认配置,将 CDC 数据转换为 Append-Only 模式,RowKind 以短格式保存。
数据转换过程:
示例 2:使用 FULL 格式和自定义字段名
使用完整格式输出 RowKind,并自定义字段名称。
示例 3:完整的测试示例(使用 FakeSource)
使用 FakeSource 生成测试数据,演示各种 RowKind 的转换效果。
预期输出:







评论