首页/数据/数仓建模速查/Apache Paimon:流式湖仓表格式
湖仓与引擎63 条

Apache Paimon:流式湖仓表格式

Paimon 面向流式写入场景:支持 LSM 结构的高频更新、变更日志产出与流读,适合「CDC 入库 + 下游流式消费」的实时湖仓链路。

数仓建模速查数据更新于 2026-10-13

Paimon 面向什么场景

Paimon 是流式湖仓表格式:主键表内部用 LSM 结构组织数据,支持高频更新与删除,并能把变更日志以流的方式输出给下游。它适合「CDC 实时入湖 + 下游继续流式消费」的链路,把原本需要多套存储拼起来的实时数仓收拢到一处。

基本信息

定位流式湖仓表格式,面向实时写入
主键表LSM 结构,支持更新与删除
变更日志changelog-producer 决定产出方式
生态与 Flink 深度集成,也支持 Spark 等引擎读取
分桶主键表需指定 bucket 数量,影响并行度与热点

典型使用场景

  • CDC 入湖:上游变更日志实时写入主键表,永远保留最新态
  • 流式消费:下游直接读变更日志做实时汇总,不必回查明细
  • 准实时维表:维表更新通过主键表落地,读侧拿到的是最新值
  • 流批统一:同一张表既能批读全量,也能流读增量
  • 替代部分消息队列场景:把短期的中间结果直接落在湖表里

主键表建表示例

主键表建表示例
CREATE TABLE paimon.db.dim_store (
  store_id   STRING,
  store_name STRING,
  region_id  STRING,
  PRIMARY KEY (store_id) NOT ENFORCED
) WITH (
  'bucket' = '4',                 -- 分桶数:影响并行度与热点
  'changelog-producer' = 'input',  -- 变更日志产出方式
  'snapshot.time-retained' = '1d'  -- 快照保留时长
);
-- 建表后可用批模式读全量,也可用流模式读增量

表类型对照

表类型更新能力适用判断
主键表支持更新与删除维表、状态表、CDC 落库
追加表只追加不更新日志、不可变明细
分区主键表按分区管理生命周期按天分区且需更新
分桶不当的主键表可写但存在热点需重新评估分桶数

变更日志为什么要专门配置

下游做流式汇总时,看到的不是文件内容变化,而是明确的变更日志。产出方式决定了下游拿到的精度与延迟:由输入直接产出最省资源,通过查找或全量合并产出则代价更高但语义更完整。选哪种要在下游精度要求和资源开销之间权衡,选错了表现为汇总结果对不上。

主键表的分桶数直接决定写入并行度。分桶数偏少时,单个桶承担全部写入压力形成热点;分桶数偏多则小文件与元数据负担上升,需要按实际数据量与写入速率评估。
主键表需要定期做快照过期与文件合并,否则快照与文件持续累积,读取规划变慢。保留时长要覆盖下游补数所需的时间范围。

易错点

  • 分桶数设置不当导致单桶写入热点,写入延迟随数据量上升
  • 变更日志产出方式与下游精度要求不匹配,汇总结果与预期不一致
  • 快照保留时长设得过短,下游补数时发现历史版本已被清理
  • 追加场景误用主键表,为不需要的去重与更新能力付出额外开销

数据来源与参考

  • Apache Paimon 官方文档:Introduction
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌