Iceberg 在基于 Flink 的流式数据入库场景中的应用
本文以流式数据入库的场景为基础,介绍引入 Iceberg 作为落地格式和嵌入 Flink sink 的收益,并分析了当前可实现的框架及要点。 应用场景 流式数据入库,是大数据和数据湖的典型应用场景。上游的流式数据,如日志,或增量修改,通过数据总线,经过必要的处理后,汇聚并存储于数据湖,供下游的应用(如报表或者商业智能分析)使用。 上述的应用场景通常有如下的痛点,需要整个流程不断的优化: 支持流式数据写入 ,并保证端到端的不重不丢(即 exactly-once); 尽量减少中间环节 ,能支持更实时(甚至是 T+0)的读取或导出,给下游提供更实时更准确的基础数据; 支持 ACID ,避免脏读等错误发生; 支持修改已落地的数据 ,虽然大数据和数据湖长于处理静态的或者缓慢变化的数据,即读多写少的场景,但方便的修改功能可以提升用户体验,避免用户因为极少的修改,手动更换整个数据文件,甚至是重新导出; 支持修改表结构 ,如增加或者变更列;而且变更不要引起数据的重新组织。 引入 Iceberg 作为 Flink sink 为了解决上述痛点,我们引入了 Iceberg 作为数据落地的格式。Iceberg 支持 ACID 事务、修改和删除、独立于计算引擎、支持表结构和分区方式动态变更等特性,很好的满足我们的需求。 同时,为了支持流式数据的写入,我们引入 Flink 作为流式处理框架,并将