大数跨境
0
0

Paimon数据丢失的常见场景和注意事项(避坑版)

Paimon数据丢失的常见场景和注意事项(避坑版) 大数据技术与架构
2025-09-23
2

大家好,我们又见面了。今天的内容很短小,关于写Paimon数据丢失的几种场景。

Paimon是数据湖领域最被广泛使用的框架之一。数据入Paimon的过程中造成数据丢失的几个需要避免的操作如下:

1.Checkpoint失败且强制重启,未提交数据丢失。
Flink写Paimon资源分配不足导致CPU 100%,CheckPoint超时失败,直接强制重启任务,导致最新一次CheckPoint之后的数据丢失。

根因:Flink写Paimon只有在任务的Checkpoint成功后才会commmit,失败后强制重启,内存缓冲区直接丢弃。

2.partial-update模式下会忽略delete消息,上游数据删除后,下游不会删除。

根因partial-update模式的设计初衷是只更新指定字段,而不是处理整行数据的删除:如果想感知数据删除,业务上需要指定删除标记字段,让下游能识别上游的删除信号。例如:在表中添加一个专门用于标记删除的字段(如is_deleted),并配置Paimon识别该字段。

3.sequence.field字段配置错误,导致旧数据把新数据覆盖。

根因:排序字段选择错误,数据乱序导致数据错误。选择单调性字段作为sequence.field,多流合并时,每条流单独配sequence字段,不要共用。

4.快照过期太快,作业Failover超过2h,流读作业恢复时找不到文件。

根因snapshot.time-retained默认 1h,快照被清理。流读表一定加 'consumer-id',确保快照不被清理,且保留时间≥最大停机时间,建议24h起步。

5.2个作业并发写同一个bucket,第2个任务持续失败。

根因:Paimon对同桶并发写仅保证Snapshot Isolation,冲突时让其中一方无限重试直到超时,看上去就像"丢数"。一个表只让一个作业写,关键表加'write-only=true',必须双写时,用不同桶字段或dynamic-bucket=true

6.Spark写低版本Paimon,内存不足失败重试,后者覆盖前者。

根因:Paimon0.9之前Spark写入非原子;重试时先写文件再提交,新文件同名覆盖旧文件。需要尽快升级Paimon版本!

最后,欢迎加入我们的知识星球小圈子:
 《300万字!全网最全大数据学习面试社区等你来》

   如果这个文章对你有帮助,不要忘记 「在看」 「点赞」 「收藏」 三连啊喂!

【声明】内容源于网络
0
0
大数据技术与架构
关注IT前沿动态,大数据AI领域最新发展。字节、阿里等一线公司大数据专家团队,大数据面试陪跑和大数据提高班进行中。
内容 274
粉丝 0
大数据技术与架构 关注IT前沿动态,大数据AI领域最新发展。字节、阿里等一线公司大数据专家团队,大数据面试陪跑和大数据提高班进行中。
总阅读13
粉丝0
内容274