Flink同步mysql写入Iceberg异常,一秒写入一次
1、现象
在Iceberg数据湖治理过程中发现,同步任务运行7天没有写入数据,运行7天后突然大批量产生Commit,一秒产生一个Commit。
2、问题
Flink写入checkpoint时会在checkpoint中先记录一个递增id, commit后会在Iceberg表中记录一个递增commit ID,记录了两个id,默认两个id相等。
通过不断写入checkpointId、commitId值一样会逐渐递增。 由1、2·····2000
3、从mysql指定时间启动,并且启动失败
从指定时间启动时,因checkpoint先触发,commit后触发,存在checkpoint成功commit失败的情况。导致表中的commitId没有更新,产生上诉现象。
比如checkpoint成功(checkpointId置为1),commit失败(表commitId还是记录旧值2000)
4、从上次失败的checkpoint启动
因checkpoint记录的值重置(1),Iceberg表未重置(2000)。这样导致1<2000,Flink认为数据已经写入iceberg,所以一直被过滤,直到checkpointId上涨到2000以后才开始写入Iceberg。
而满足2000以后,会快速把堆积的commit全部提交,造成1秒产生一个commit现象。腾讯团队在解决中
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体