概述
Apache Paimon 介绍
Apache Paimon 是 Apache 软件基金会旗下的流批一体湖仓存储项目(原 Flink Table Store,2023 年进入 Apache 孵化器,2025 年毕业为顶级项目)。
它的核心定位是:在数据湖(HDFS / S3 / OSS / MinIO)之上,提供一个支持更新/删除、主键约束、CDC 入湖、快照回溯、流批一体读写的开放表格式——解决传统数据湖(Hive Text/Parquet/ORC)不支持实时 Upsert、小文件多、入湖链路复杂等痛点。
Paimon 在湖仓架构里的位置
典型的湖仓一体分层中,Paimon 通常承担 ODS / DWD / DWS 这三层的存储(ADS 层可选走 StarRocks / Doris / ClickHouse 做加速):
┌────────────────────────────────────────────────────────────────────┐
│ 湖仓一体分层架构 │
├──────────┬──────────┬──────────┬──────────┬────────────────────────┤
│ ODS │ DWD │ DWS │ ADS │ 元数据 / 权限 │
│ 原始贴源 │ 明细清洗 │ 主题汇总 │ 应用集市 │ Hive Metastore │
│ Paimon │ Paimon │ Paimon │ StarRocks│ (Paimon 直接复用 HMS) │
│ (主键表) │ (主键表) │(汇总宽表) │ / Doris │ │
├──────────┴──────────┴──────────┴──────────┴────────────────────────┤
│ 底层湖存储:HDFS / S3 / OSS / MinIO │
└────────────────────────────────────────────────────────────────────┘
▲ ▲ ▲
│ │ │
Flink CDC 入湖 Flink SQL 加工 BI 直查 / 联邦查询
Paimon 对比 Hive / Iceberg / Hudi(选型速记)
| 能力 | Hive (Parquet/ORC) | Apache Iceberg | Apache Hudi | Apache Paimon |
|---|---|---|---|---|
| 主打场景 | 纯离线数仓(T+1) | 数据湖批处理 + 分析 | CDC 入湖(偏 MOR/COW 选型) | 流批一体 + Flink 生态原生,CDC 入湖 + 实时明细 |
| Flink 流式写 | ❌(只能写小批量,小文件爆炸) | ⭕(社区版流式写支持弱) | ⭕(需要配 DFS 或 Hudi Streamer) | ✅ 原生支持:连续 Checkpoint + 自动 Compaction + Changelog 产生 |
| 主键 Upsert / Delete | ❌(只能 Insert Overwrite 全量重写) | ✅(Merge On Read 性能较弱) | ✅(MOR 性能好) | ✅ 原生强约束主键表,LSM 结构写放大低 |
| Changelog(下游可流读) | ❌ | ⭕(增量读实现较复杂) | ⭕(MOR 增量可用) | ✅ 一等公民:Flink CDC → Paimon → Flink 下游,整条链路全是流 |
| 流批一体读写 | ❌(批为主,流写是硬伤) | ⭕(批为主) | ⭕(批+准实时) | ✅ 同一张表:Flink Streaming 写 / Flink Batch 读 / Spark 批读 / Trino 即席读 全部打通 |
| 小文件治理 | ❌(自己写脚本合并) | ✅(定期 Rewrite 进程) | ✅(Clustering / Compaction) | ✅ 写入时异步/同步自动 Compaction,流式作业无需外部调度 |
| Flink SQL 语法对齐度 | ⭕(还要动 InputFormat) | ⭕(Flink Catalog 一般) | ⭕(Flink Catalog 一般) | ✅ Flink 社区 PMC 直接背书维护,Paimon Catalog 和 Flink 无缝集成,Flink SQL 原封不动就能跑 |
| Hive Metastore 集成 | ✅(原生) | ✅ | ✅ | ✅(直接复用现有 HMS,不用再部署 Paimon 自己的元数据服务) |
| 项目发起方 / 生态 | Apache Hive(老社区) | Netflix / Apple / Snowflake 联合发起 | Uber / AWS 发起 | Flink 社区亲自孵化(原 Flink Table Store),阿里/字节/快手/AWS 深度贡献 |
一句话选型建议:如果你的计算引擎里 Flink 占比很高(尤其是做 Flink CDC + 实时数仓),又想同时支持离线批处理和 BI 查询,选 Paimon 是最顺滑、踩坑最少的。
核心特性(湖仓落地最看重的 9 个)
- 主键表 + LSM 存储引擎:支持基于主键的高效 Upsert/Delete,写放大比 Hudi MOR 更低,适合 CDC 入湖场景。
- Append-only 表:日志/埋点无需更新的场景,用 Append-only 表配合可选
sequence.field做到乱序去重。 - 完整快照管理 + 时间旅行:每次提交生成快照(Snapshot),可按快照 ID / 时间戳回溯查询;
TAG功能可长期保留关键时间点。 - Changelog 生产器一等公民:
changelog-producer可设为input/full-compaction/lookup,下游 Flink / Doris / StarRocks 能直接流读 Paimon 的变更。 - 自动 Compaction(流式写入时的小文件克星):写入 Checkpoint 后后台自动合并小文件,无需再跑单独的 Spark/Hive SQL 合并脚本,降低运维成本。
- Sort Key + Z-Order + Clustering:支持按常用过滤/Join 字段做排序和聚簇,BI 查询性能可比 Hive 提升 5~50 倍。
- Bucket 弹性变更:
bucket = -1(动态 bucket)可以在数据量增大后自动分裂,避免一开始估错 bucket 数导致后期数据倾斜。 - 多引擎互通:Flink / Spark / Hive / Trino / Presto / Doris / StarRocks / SeaTunnel 全部支持同一张表读写,真正湖仓一致。
- Hive Metastore 无缝复用:现有数仓的 HMS 直接能用,Paimon 表对 Hive 来说就是普通的 External Table(
STORED BY),迁移成本极低。
适用场景
| 场景 | Paimon 怎么用 | 价值 |
|---|---|---|
| Flink CDC 一键入湖 | MySQL/PostgreSQL/Oracle → Flink CDC → Paimon ODS 层(主键表) | 原来需要 Kafka + Hudi + 合并脚本的 3 跳,变 1 跳直接入湖,链路缩短一半 |
| 实时明细 DWD | 日志 / 埋点 / 业务明细实时清洗后写入 Paimon DWD 主键表 | 下游 Flink 作业无需再读 Kafka,可以直接流读 Paimon 的 changelog,做到"湖也是消息队列" |
| T+0 准实时汇总 | 按分钟/小时级 Flink 聚合写 Paimon DWS 汇总表 | 同时支持 BI 工具分钟级更新,也支持 Spark 批跑 T+1 全量补数 |
| 数据修正 / Erase 合规删除 | 按主键 Delete,或按分区 + 条件 Update | GDPR、个人信息擦除场景下,无需 INSERT OVERWRITE 整分区重写 |
| 历史回溯 / 数据调试 | VERSION AS OF / TIMESTAMP AS OF / TAG | 数据口径回滚、对账、A/B 对比非常方便 |
| 与 StarRocks/Doris 构建湖仓加速层 | Paimon 存 ODS/DWD/DWS,StarRocks/Doris 做外部表/外表联邦查或物理导入 ADS | 冷热分层:冷数据存在便宜的对象存储,热数据放到 OLAP 引擎加速 |
典型版本与依赖速查表
| Paimon 版本 | 推荐 Flink 版本 | 推荐 Spark 版本 | 推荐 Hive 版本 |
|---|---|---|---|
| Paimon 2.0 (stable, 推荐) | Flink 1.20.x / 1.19.x(配合 Paimon Flink 1.20 Bundled Jar) | Spark 3.5.x(配合 Paimon Spark 3.5 Bundled Jar) | Hive 3.1.x |
| Paimon 0.9.x | Flink 1.18.x / 1.19.x | Spark 3.4.x / 3.5.x | Hive 3.1.x |
| Paimon 0.8.x | Flink 1.17.x / 1.18.x | Spark 3.3.x / 3.4.x | Hive 3.1.x |
| Paimon 0.7.x | Flink 1.16.x / 1.17.x | Spark 3.2.x / 3.3.x | Hive 3.1.x |
HiDataPlus HDP 3.3.2 自带的是 Flink 1.15.x / Spark 3.1.x,做 Paimon 2.0 不兼容。所以必须独立安装 Flink 1.20(推荐路径
/home/bigdata/module/flink-1.20,别覆盖 HDP 自带版本);Spark 相关的先不写,后面单独补;Hive 3.1.0 完美复用 HDP 自带的 Hive Metastore(thrift://master1:9083),不用改。配合作业管理平台:推荐独立安装 StreamPark 2.2.x 到
/home/bigdata/module/streampark,端口 10001(与 Ambari 自带的 StreamPark 端口 10000 区分开),部署完 Flink 1.20 后在 StreamPark 页面里把 Flink Home 指向/home/bigdata/module/flink-1.20,就能按 StreamPark Quick Start 的方式提交 Flink SQL / JAR 作业。