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

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

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

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

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

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

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

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

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

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

[图片: https://mmbiz.qpic.cn/mmbiz_png/UdK9ByfMT2PjibKXPAPlTfjYkgNOXuVMuq5T2UAxIT6RA6vbnueGnjfNaibiarz5rZxAljArG0ZaiaBMnfOAOSQa0A/640?wx_fmt=png&from=appmsg&randomid=pon3gowk&wxfrom=5&wx_lazy=1&tp=webp#imgIndex=1]

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

[图片: https://mmbiz.qpic.cn/mmbiz_png/UdK9ByfMT2PDwSDUx452DKyaUxtxDoz47He3aCnMeSE9wLtZJwcdOFU6jNJdvwuULcOtMEU3DFFESPHpbU8Hdg/640?wx_fmt=png&wxfrom=5&wx_lazy=1&randomid=2qf33j24&tp=webp#imgIndex=2]

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容