Apache Flink 和 Paimon 在自如数据集成场景中的使用

简介: Apache Flink 和 Paimon 在自如数据集成场景中的使用

业务背景


自如目前线上有基于 Hive 的离线数仓和基于 Flink、Kafka 的实时数仓,随着业务发展,我们也在探索引入湖仓一体的架构更好的支持业务,我们对比了 Iceberg、Hudi、Paimon 后,最终选择 Paimon 作为我们湖仓一体的存储引擎,本文分享下自如在引入 Paimon 做数据集成的一些探索实践。

一、原始接入


自如目前使用的业务库入 hive 的简略逻辑图如下(拿 Mysql 举例)

通过 hive jdbc handler 每天一个快照拉取数据到 hive,如果需要更高新鲜度的业务场景,使用 canal 把数据接入 kafka,然后通过 flink 写入 hdfs,再通过 hive merge 方式合并获得最高 10 分钟延迟新鲜度的数据。这个架构运行起来有几个问题:

  1. 基于 hive jdbc handler 拉取数据每天都是一个全量业务库数据,表比较大的情况下,对业务库压力比较大,如果增量拉取也需要业务线增加 lastmodified 字段,业务不见得愿意配合修改,分库分表场景支持起来也比较繁琐
  2. 基于 canal 的准实时线由于链路比较长,出现问题后也比较难排查

引入 paimon 之后数据接入的简略逻辑图如下

在整合 paimon 到大数据平台后,我们对数据接入流程进行了很大简化。具体来说,hive ods 层的数据来源已经从原来的原始业务表迁移到了 paimon 表。在我们的T+1离线分析场景中,仍然使用 hive ods 表;而对于需要实时数据的场景,则直接查询paimon 表。这种做法的一个显著优点是,夜间的批处理作业不再因为从原始业务数据库拉取数据而遭受延误。我们还向社区贡献了 “mongo入paimon” 的实现方案,以支持 mongodb 数据源到paimon的数据同步https://cwiki.apache.org/confluence/display/PAIMON/PIP-7%3A+SyncAction+based+on+MongoDB尽管paimon提供了显著的效率提升,但我们仍然保持使用 hive ods 表,而没有直接以 paimon 表替代它们。主要原因包括:查询语法的一致性:为了确保上层查询逻辑不受影响,我们需要维持 paimon 的标签(tag)查询和 Hive 的分区查询在语法上的一致性。这样做可以避免对现有大量 ETL任务进行修改。历史数据的动态路由:在查询 paimon 的标签时,如果数据属于历史的 hive 分区数据,我们还需要实现一个动态路由机制,以确保查询能够正确地指向这些历史数据。为了进一步优化这个流程,我们计划在未来和社区一起解决上述两个问题。这将进一步简化数据架构,提供更加灵活和高效的数据查询能力。

二、打宽接入


paimon 中的数据接入直接打宽的实现使我们比较感兴趣的,但是 paimon 中目前只支持主键打宽,不支持外键打宽,实际业务场景中很多都涉及外键打宽,对于这个场景我们做了自己的一个实现, 外键打宽涉及的核心问题是主外键关系的存储,我们把这个关系存储到外置的存储(比如 redis 或者 Mysql)中。举例来说宽表构建逻辑如下:

如上图  A、B、C 三张表需要打宽按照主键m 进行打宽,A、B两张表都有主键m,但是C没有,C表和B表用n字段关联。


如上图,如果A表或者B表中来了一条数据,直接在flink中 lookup join 关联A、B、C三张表,写入到下游宽表中(paimon 或者 clickhouse)。 如上图所示,如果C表来了一条数据,需要从B表和C表的关系表中,查询到C表这条数据的变更涉及到多少主键m的变更,然后把影响到的主键m值全部重新再关联一遍写入到下游表。



如上图所示,实际业务场景中是A、B、C三张表都会发生变化,就需要把所有表的变化影响到多少主键m变更都记录下来,并且重新关联写入下游宽表,相当于进行一个“暴力计算”。这里我们用的是 flink lookup join,  A、B、C都是维表,那 flink lookup join 的流表是哪个?其实这里我们构建了一个“虚拟流表”,这个流表只有一个字段就是主键m, A、B、C表的任何变更,涉及到多少的主键m的变更,都实时写入到这个虚拟流表中,这个虚拟流表可以用 kafka 或者 paimon 作为载体实现。
简单的逻辑如上面所述,实际真正使用的时候还会涉及业务的A、B、C源表并不能直接lookup join,还需要构建对应的镜像表、构建外键索引表。具体的代码实现可以看下面的全部基于mysql实现的简化版本的一个例子https://github.com/CNDPP/widetable/tree/main 代码中的例子是三张mysql表按照bus_opp_num字段打宽写入一张mysql表,从这个简化例子可以了解具体实现的细节。

三、下一步规划


1、原始表接入中使用 paimon tag 替换掉目前的 hive 分区,减少 hdfs 空间占用

2、paimon 社区规划中也有支持外键打宽的规划,跟随社区引入测试使用

3、把 paimon 引入到后续的数仓 ETL 加工之中,利用湖上的 zorder 等特性加速离线跑批在落地 paimon 实践的过程中,深切的感受到了 paimon 社区的活跃和热情,之信老师给我们非常多的耐心指导,帮助我们在生产环境中快速落地,感谢 paimon 社区,祝福 paimon 越来越好!

相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
10月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
1531 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
712 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
11月前
|
人工智能 运维 Java
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
本文基于Apache Flink PMC成员宋辛童在Community Over Code Asia 2025的演讲,深入解析Flink Agents项目的技术背景、架构设计与应用场景。该项目聚焦事件驱动型AI智能体,结合Flink的实时处理能力,推动AI在工业场景中的工程化落地,涵盖智能运维、直播分析等典型应用,展现其在AI发展第四层次——智能体AI中的重要意义。
3423 27
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
|
11月前
|
存储 JSON 数据处理
Flink基于Paimon的实时湖仓解决方案的演进
本文源自Apache CommunityOverCode Asia 2025,阿里云专家苏轩楠分享Flink与Paimon构建实时湖仓的演进实践。深度解析Variant数据类型、Lookup Join优化等关键技术,提升半结构化数据处理效率与系统可扩展性,推动实时湖仓在生产环境的高效落地。
1292 1
Flink基于Paimon的实时湖仓解决方案的演进
|
11月前
|
存储 人工智能 监控
淘宝闪购基于Flink&Paimon的Lakehouse生产实践:从实时数仓到湖仓一体化的演进之路
本文整理自淘宝闪购(饿了么)大数据架构师王沛斌在 Flink Forward Asia 2025 上海站的分享,深度解析其基于 Apache Flink 与 Paimon 的 Lakehouse 架构演进与落地实践,涵盖实时数仓发展、技术选型、平台建设及未来展望。
1762 0
淘宝闪购基于Flink&Paimon的Lakehouse生产实践:从实时数仓到湖仓一体化的演进之路
|
12月前
|
存储 人工智能 数据处理
对话王峰:Apache Flink 在 AI 时代的“剑锋”所向
Flink 2.0 架构升级实现存算分离,迈向彻底云原生化,支持更大规模状态管理、提升资源效率、增强容灾能力。通过流批一体与 AI 场景融合,推动实时计算向智能化演进。生态项目如 Paimon、Fluss 和 Flink CDC 构建湖流一体架构,实现分钟级时效性与低成本平衡。未来,Flink 将深化 AI Agents 框架,引领事件驱动的智能数据处理新方向。
1116 6
|
12月前
|
消息中间件 存储 Kafka
Apache Flink错误处理实战手册:2年生产环境调试经验总结
本文由 Ververica 客户成功经理 Naci Simsek 撰写,基于其在多个行业 Flink 项目中的实战经验,总结了 Apache Flink 生产环境中常见的三大典型问题及其解决方案。内容涵盖 Kafka 连接器迁移导致的状态管理问题、任务槽负载不均问题以及 Kryo 序列化引发的性能陷阱,旨在帮助企业开发者避免常见误区,提升实时流处理系统的稳定性与性能。
880 0
Apache Flink错误处理实战手册:2年生产环境调试经验总结
|
12月前
|
存储 分布式计算 数据处理
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
阿里云实时计算Flink团队,全球领先的流计算引擎缔造者,支撑双11万亿级数据处理,推动Apache Flink技术发展。现招募Flink执行引擎、存储引擎、数据通道、平台管控及产品经理人才,地点覆盖北京、杭州、上海。技术深度参与开源核心,打造企业级实时计算解决方案,助力全球企业实现毫秒洞察。
951 0
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
4768 74
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎

热门文章

最新文章

推荐镜像

更多