当我的spark应用程序的uber jar和spark-submit shell命令的--jars选项的内容都包含类似的依赖关系时,类加载的优先顺序是什么?
我是从第三方库集成的角度提出这个问题的。如果我将--jars设置为使用2.0版的第三方库,并且进入这个spark-submit脚本的uber jar是使用2.1版组装的,那么在运行时加载哪个类?
目前,我考虑保留对hdfs的依赖,并将它们添加到spark-submit的--jars选项中,同时希望通过一些最终用户文档来要求用户将这个第三方库的作用域设置为在他们的spark应用程序的maven pom文件中提供。
发布于 2015-07-03 05:43:31
这在某种程度上是由params控制的:
spark.driver.userClassPathFirst &spark.executor.userClassPathFirst如果设置为true (default为false),则从docs返回
(实验性)在驱动程序中加载类时,是否让用户添加的jars优先于Spark自己的jars。此功能可用于缓解Spark的依赖项和用户依赖项之间的冲突。它目前是一个实验性的特性。这仅在群集模式下使用。
我写了一些代码来控制这一点,在早期版本中有一些bug,但如果你使用的是最近的Spark版本,它应该可以工作(尽管它仍然是一个实验特性)。
https://stackoverflow.com/questions/31150656
复制相似问题