flink1.10对ddl这块支持比较完善,最近用java写了个ddl kafka的demo测试。在ide本地环境中执行没有问题,但将任务打包提交的flink 集群时提交就报错,无法执行,异常如下: 
看异常好像是ddl写错了,本地运行正常,说明没有问题。使用flink sql-client客户端测试报一样的错,flink lib下没有对应的包,将包放到lib下,使用sql-client执行正常,说明提交集群时没有加载到包,实际上包已经打进去了。怀疑是flink类加载机制造成的。重新提交任务,依然失败,这次异常变了成如下:

看异常怀疑包冲突,排了janino包,提交还是出现这个异常。找到项目中引用的CompilerFactoryFactory这个类查看异常处发现代码对不上,少了很多行代码,于是将flink lib下对应的jar取下来反编译发现代码对上了,将本地项目中对应的flink-table-planner,flink-table-planner-blink包不打包进去,使用flink lib下自带的jar,重新提交任务正常运行了。为什么自己打包的flink-sql-connector-kafka包无法加载到,心中还是疑惑。为了解决这个使用阿里开源的arthas查看类加载方式。在flink web ui上查看刚提

在Flink 1.10版本中,尝试通过Java SQL DDL提交Kafka连接器的作业到集群时遇到异常。本地运行正常,但在集群中报错,经过排查发现可能是类加载问题。在解决过程中,尝试了更新库、排除包冲突,并使用Arthas工具检查类加载情况。最终发现,问题在于客户端加载Flink SQL Connector Kafka的jar包需要放在lib目录下,通过调整部署方式并确保正确加载依赖,成功解决了问题。
最低0.47元/天 解锁文章
2369

被折叠的 条评论
为什么被折叠?



