项目场景:
本来想写一个windows下的Flink连接虚拟机中Kafka作为数据源的一个小Demo,但是在使用过程中出现了形形色色的问题,做一下记录
问题描述
首先是使用flink版本1.14.4版本flink-kafka版本1.11.4
在此版本中出现报错情况
Recovery is suppressed by NoRestartBackoffTimeStrategy
原因分析:
这个地方我搜过很多原因,有人说是因为kafka的配置问题,当然这确实是一个问题,因为如果kafka必须配置成以下ip才能够被windows本地访问到,可是就算是ip配置不正确也不应该导致这个问题,应该是连接超时才对
还有人说是没有加时间语义导致的,是这样的关于这个时间语义的问题在 低版本时确实时需要指定的,但是后来高版本之后就不许再指定了,使用的1.14.4版本是不需要指定的尝试失败后反复确认使用其他方式比如使用springboot尝试与kafka连接发现正常连接,此时基本确定是Flink程序问题但是我的Flink又没什么代码,只能确认是版本问题
之后降低flink版本为1.10.0 注意这时的flink是需要指定时间语义的env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime)
但是此时会出现以下错误
classnotfound不是jar包冲突就是导错包,导错包倒是基本不会,于是就考虑jar包依赖问题这个时候降低flink-kafka的依赖版本为1.10.0与flink依赖保持一致再次启动
这时连接就成功了
—
解决方案:
很多大数据的处理框架都很容易出现这种版本不匹配导致的错误,有时候确实让人很苦恼,而且出现同样的错误原因很多,所以网上的解决方案可以借鉴,但是如果实在找不到下手点而且确认代码没有问题的情况下可以考虑更换版本进行匹配