You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by yawning <ya...@foxmail.com> on 2023/07/13 08:54:17 UTC

一个强依赖avro的项目升级Flink1.17各种报错

用arthas查了下,和Avro相关的类都加载了两次。

比如:

sc org.apache.avro.generic.GenericData

org.apache.avro.generic.GenericData

org.apache.avro.generic.GenericData

org.apache.avro.reflect.ReflectData

org.apache.avro.specific.SpecificData

org.apache.avro.specific.SpecificData






看classloader,一个是ChildFirstClassLoader加载,另外一个是sun.misc.Launcher加载。

看路径,前者是通过
/data/disk10/hadoop/yarn/local/usercache/hive/appcache/application_&nbsp; &nbsp;7233_110498/tm_container_e78_1688174647233_110498_01_000003/blobStorage/job_61387d  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;b3a053dce7791e2b848d6d9316/blob_p-774ba8661e0458392ee0cd560bab3d58baca2331-9696b4c  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;d66b2bb15b8292bb29dcd6b2b&nbsp; 加载
后者是通过
/data/disk10/hadoop/yarn/local/usercache/hive/appcache/application_7233_110498/filecache/23/streaming-1.2.jar 加载
这个jar是我们打的一个shade jar,会把avro相关的依赖放进去。










最后通过设置classloader.resolve-order为parent-first解决问题。


感觉很奇怪。




提交方式为:

/data/soft/flink-1.17.1/bin/flink run-application -t yarn-application -c com.xxxx.Main streaming-1.2.jar