开发者社区 问答 正文

Flink报错Can not retract a non-existent record. This

已解决

Flink报错Can not retract a non-existent record. This should never happen.

展开
收起
阿里云服务支持 2022-12-20 14:13:23 570 发布于浙江 分享
分享
版权
来自: 阿里云支持与服务 举报
1 条回答
写回答
取消 提交回答
  • 官方回答

    通常有以下三种原因,可以按照以下方式进行处理:

    问题原因①:由代码中now()导致。因为TopN不支持非确定性的排序字段,now()每次输出的值不同,所以导致Retraction会找不到之前的值。

    解决方法:Event Time或源表中一个具有Processing Time属性的字段。

    问题原因②: table.exec.state.ttl参数值设置过小。

    解决方法:设置过小的TTL参数使用默认配置,或调大参数值。

    问题原因③:上游使用CDC Connector,hologres全增量一体源表 并不是一致性的读取,全量数据和增量数据之前是有overlap的,导致处理binlog一开始的 update_before 的时候,会发现该数据在state中不存在。(预计弹内vvr-6.0.2,云上4.0.15修复)

    绕过方法:显式配置上table.exec.source.cdc-events-duplicate: true的作业参数,显式增加去重节点保证数据的一致性。

    2022-12-20 14:19:59 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等