主要观点总结
文章介绍了作业帮大数据团队在历史数据采集过程中遇到的问题以及解决方案。由于历史采集能力存在资源消耗多、稳定性弱、维护成本高的问题,团队决定使用新的方案来解决这些问题。新的方案包括将Mysql采集由入Hive改为Iceberg,并使用Flink CDC进行数据采集。文章还介绍了方案设计、数据迁移、资源收益和架构收益等关键点。
关键观点总结
关键观点1: 历史采集能力存在的问题
资源消耗多、稳定性弱、维护成本高,影响数仓表产出和业务看数。
关键观点2: 解决方案概述
决定将Mysql采集由入Hive改为Iceberg,并使用了Flink CDC进行数据采集。
关键观点3: 方案设计
介绍了三种方案的优势和劣势,包括Flink Upsert方式、增加定时同步分区快照数据、写入改为增量等。
关键观点4: Iceberg表设计
为保证采集流程表级别隔离,采用每组MySQL表对应一个Iceberg表的设计。利用Iceberg表存储Change Log数据。
关键观点5: 数据迁移的挑战和风险
包括数据准确性保障、历史包袱和迁移效率平衡、以及遇到的技术问题等。
关键观点6: 资源收益和架构收益
资源收益方面节省了81%的迁移资源,架构收益包括表级采集独立、解除中心式依赖、平台化管理、血缘链路完整等。
正文
方案一:Flink Upsert 方式直接写 Iceberg 表
方案三:写入改为增量,利用 Spark 做 Merge 写入历史 ODS
Iceberg 表存储的是 Change Log 数据。为了保证采集流程做到表级别隔离,避免互相影响导致核心表就绪时间晚,采用每组(适配单集群分库分表场景) MySQL 表对应一个 Iceberg 表。将 Iceberg 表抽象为灵活且一致的 Schema,既可以保障字段变化的扩展性,也降低了字段类型映射等平台的开发成本。Iceberg 查询场景为全列 Scan,也不用顾虑复杂类型查询无法下推的影响。