*遇到的问题*
根据flink写入hive的最佳实践(https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/connectors/table/hive/overview/#dependencies),
我们添加了flink-sql-connector-hive-2.2.0_2.11-1.12.0.jar到集群的lib目录下.
该jar包中使用了3.1版本的common-lang3
我们想要使用3.3.2版本的common-lang3, 于是手动打包了logformat.jar,
但发现任务执行时还是调用了3.1版本的common-lang3

*我们的处理方式*
在官网上看到yarn-cluster模式下,
不会使用动态类加载(https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/ops/debugging/debugging_classloading/#overview-of-classloading-in-flink).
 
我们的理解是, 不使用动态类加载, 也就不会特意优先加载用户的jar, 此时会根据jar包的名字从a到z依次加载. 
于是我们把logformat.jar改名为alogformat.jar, 以保证用户jar包的名字在排序时有更高的优先级.
然后再执行任务时, 正常调用了3.3.2版本的common-lang3

*问题总结*
1. yarn-cluster模式下确实是根据jar包的名字从a到z依次加载的吗?
2. 在yarn-cluster模式下, 有没有办法不更改用户jar包的名字, 但是优先加载用户jar包

*组件版本*
flink: 1.12.0
hive: 2.1.0



--
Sent from: http://apache-flink.147419.n8.nabble.com/

回复