问题一:Flink报错Can not retract a non-existent record. This should never happen.
Flink报错Can not retract a non-existent record. This should never happen.
参考答案:
通常有以下三种原因,可以按照以下方式进行处理:
问题原因①:由代码中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的作业参数,显式增加去重节点保证数据的一致性。
关于本问题的更多回答可点击进行查看:
https://developer.aliyun.com/ask/476346?spm=a2c6h.13066369.question.21.6f064d5cc9KP97
问题二:实时计算Flink报错DateTimeParseException: Text 'xxx' could not be parsed
实时计算Flink报错DateTimeParseException: Text 'xxx' could not be parsed
参考答案:
可参考QA:报错:DateTimeParseException: Text 'xxx' could not be parsed
关于本问题的更多回答可点击进行查看:
https://developer.aliyun.com/ask/475317?spm=a2c6h.13066369.question.24.6f064d5cJ7C8oF
问题三:实时计算Flink报错java.io.EOFException: SSL peer shut down incorrectly
实时计算Flink报错java.io.EOFException: SSL peer shut down incorrectly
参考答案:
可参考QA:报错:java.io.EOFException: SSL peer shut down incorrectly
关于本问题的更多回答可点击进行查看:
https://developer.aliyun.com/ask/475319?spm=a2c6h.13066369.question.23.6f064d5c1h1iXx
问题四:实时计算Flink报错The connector is trying to read binlog xxx use a snapshot when needed.
实时计算Flink报错The connector is trying to read binlog xxx use a snapshot when needed.
参考答案:
该报错的原因是作业处理的速度追不上binlog产生的速度,导致正在读的位点被清理了。 目前只能清理状态重启。
● 场景1: rds做了内部迁移操作,flink jar作业使用mysql cdc消费mysql数据。
报错原因:是作业处理的速度追不上mysql binlog 产生的速度,导致正在读的位点被清理了。 排查思路:
先确认rds的地址和binlog文件位点和迁移前是否一致:
(1)rds 地址不会变化
(2)如果节点有变化,binlog文件位点会变化。如果是从远程拉取的oss中的binlog,binlog是固定的。
解决方案: (1)重新读取:flink cdc不会到oss上拉文件,是直链mysql服务器(无状态重启)。 (2)绕行方案:从只读库拉取数据。 注意事项: (1)从库读是支持的,从库延时比主库大点。注意RDS MySQL 5.6不支持,5.7之后的版本都支持,因为RDS MySQL 5.6 只读实例的binlog文件是简化过的,没有数据。 (2)主库风险也还好,flink cdc 只有读的权限,不会加锁和写的权限。如果rds配置了HA,即多主实例,用户同时开启了GTID,然后通过VIP/DNS下挂rds的几个多主实例地址,这样flink cdc /canal 这些同步工具通过访问 VIP/DNS 链接rds时才能实现不中断。
● 场景2:RDS有日志保留策略,最长18个小时,最大占用30%存储空间,两个条件谁先满足都会触发删除,如果写入特别多,超过30%的存储空间,可能binlog日志1小时就删除了。注意:rds页面上还有一个7天的binlog文件保存,这个是rds后台转存到oss上的,flink cdc目前是没有去转存后oss上去读取这些文件的。
● 场景3:volvo通过只读实例消费CDC数据,RDS的只读实例不保证binlog(本地只保留10s,上传oss),所以flink cdc侧不建议连接 RDS 的只读实例。只读实例一旦作业 Failover 10s 内恢复不过来,就会有这个异常只读实例判定,rr开头的就是只读实例rm开头的就是正常的实例。
关于本问题的更多回答可点击进行查看:
https://developer.aliyun.com/ask/475542?spm=a2c6h.13066369.question.26.6f064d5ceYixTj
问题五:实时计算Flink报错org.codehaus.janino.CompilerFactory cannot be cast to org.codehaus.commons.compiler.ICompilerFactory
实时计算Flink报错org.codehaus.janino.CompilerFactory cannot be cast to org.codehaus.commons.compiler.ICompilerFactory
参考答案:
关于本问题的更多回答可点击进行查看:
https://developer.aliyun.com/ask/475322?spm=a2c6h.13066369.question.25.6f064d5cwDPCdl