开发者社区> 问答> 正文

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 491 0
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
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
作为全球云计算的领先者,阿里云为全球230万企业提供着云计算服务,服务范围覆盖200多个国家和地区。我们致力于为企业、政府等组织机构提供安全可靠的云计算服务,给用户带来极速愉悦的服务体验。
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载