先介绍一下大的背景吧,我们已经能通过 Flink CDC 将整个数据库同步到 Kafka 中了,这一部分的实现方案已经汇总在了 《Flink CDC 整库 / 多表同步至 Kafka 方案(附源码)》一文中。接下来要完成的是后半程的工作:读取 Kafka 的 Debezium CDC 数据写入到数据湖的 Hudi 表中,这样就能完整地实现整个数据库同步入湖的设计目标,当然,要求还是:“源库整库 / 多表 => Kafka”是一个作业,“Kakfa => Hudi 整库 / 多表”也是一个作业,这样才有比较强的实用性。
“Kakfa => Hudi 整库 / 多表” 的实现,我们有两个大的调研方向:
- 利用 Hudi 内置的
HoodieMultiTableStreamer
/HoodieMultiTableDeltaStreamer
实现多表入湖 - 在 Spark 中通过编程(主要是利用 foreachBatch 方法)自主实现将一个 Stream 分流写入多张 Hudi 表(该方案被人验证过,是可行的,但每张的表 schema 信息依赖的是 Spark 的类型推断,这种方式没有使用 Schema Registry 来得安全高效!)
如果两种方案都是可行的,那么前者,也就是使用 Hudi 内置的 HoodieMultiTableStreamer
/ HoodieMultiTableDeltaStreamer
无疑是更明智的选择,因为作为