当两个类似的类存在时,spark uber jar和spark-submit --jars之间的类路径解析

时间:2015-07-01 00:21:20

标签: apache-spark

当我的spark应用程序的超级jar和我的spark-submit shell命令的--jars选项的内容包含类似的依赖项时,类加载的优先级是什么?

我从第三方库集成的角度问这个问题。如果我将--jars设置为在版本2.0中使用第三方库并且使用版本2.1组装进入此spark-submit脚本的超级jar,那么在运行时加载哪个类?

目前,我想保留我对hdfs的依赖关系,并将它们添加到spark-submit上的--jars选项中,同时希望通过一些最终用户文档来要求用户设置此第三方库的范围提供'在他们的火花应用程序的maven pom文件中。

1 个答案:

答案 0 :(得分:10)

这在某种程度上受制于params:

  • spark.driver.userClassPathFirst&
  • spark.executor.userClassPathFirst

如果设置为true(default为false),则来自docs

  

(实验)在驱动程序中加载类时,是否优先给用户添加的jar优先于Spark自己的jar。此功能可用于缓解Spark的依赖关系和用户依赖关系之间的冲突。它目前是一个实验性功能。这仅在群集模式下使用。

我编写了一些控制它的代码,早期版本中存在一些错误,但是如果您使用最新的Spark版本它应该可以工作(尽管它仍然是一个实验性功能)。 / p>