前言
本文主要记录 CDC2Kafka 使用过程中的一些细节配置,以 mysql-cdc 为例。
背景需求
之前 CDC 的主要使用场景并没有写到 Kafka ,而是直接 Sink 到支持更新的目标端,比如 关系型数据库、Hudi、HBase,现在有了写到 Kafka 的需求,主要原因是有的项目的厂商不会使用数据湖表格式(Hudi、Iceberg、Delta Lake),在使用 Hive 时不能支持ACID ,那么只能通过覆盖分区的方式实现更新删除,而覆盖更新对比小表来说可以通过定时全量抽取实现,对于大表每次都全量抽取效率太慢,所以最好可以通过增量变更日志+历史Hive表数据合并来实现,对于这种需求就得通过 CDC 格式来实现,CDC 格式有 debezium-json、canal-json、maxwell-json、ogg-json、changelog-json。 关系型数据库、Hudi、HBase等是不支持CDC格式的,常用的比较熟悉的组件就是Kafka,另外后面发现直接写 HDFS 文件也是可以的,本文先总结 CDC2Kafka+debezium-json 中的一些具体需求配置。
debezium-json
格式数据示例:
1 | {"before":{"id":3,"name":"hudi3","price":3.33,"ts":2000,"dt":"20230331"},"after":null,"op":"d"} |
分别对应update、insert、delete ,其中 update 一次产生两条记录,先删除再插入。
more >>