Classpath resolution between spark uber jar and spark-submit --jars when similar classes exist in both
当我的spark应用程序的uber jar和我的spark-submit shell命令的--jars选项的内容都包含相似的依赖项时,类加载的优先级是什么?
我从第三方库集成的angular提出这个问题。如果我将--jars设置为使用2.0版的第三方库,并且使用2.1版组装了该spark-submit脚本中的uber jar,则该类在运行时加载?
目前,我想保留对hdfs的依赖关系,并将其添加到spark-submit的--jars选项中,同时希望通过一些最终用户文档来要求用户设置此第三方库的范围将在其spark应用程序的maven pom文件中"提供"。
这在某种程度上由params控制:
-
spark.driver.userClassPathFirst
- 谢谢@holden-我会研究这个。假设我的二进制文件不会与Spark附带的内容发生冲突,因为Spark不了解它,这仍然是要使用的参数吗? [前任。如果我的二进制文件是第三方,而不是Spark随附的yarn或其他开源二进制文件之一]
-
请注意,The configuration key 'spark.yarn.user.classpath.first' has been deprecated as of Spark 1.3 and may be removed in the future. Please use spark.{driver,executor}.userClassPathFirst instead.
-
@Holden为什么userClassPathFirst选项标记为"实验性"?期权可以撤回吗?使用此选项是否有缺点?我似乎很容易陷入需要与Spark一起提供的gson或snakeyaml较新版本的情况。对我来说,这似乎是一个重要的选择。
-
这没有帮助我解决Spark版本2.3.0上的问题,我遇到了相同的错误
-
此外,过期功能的作用还在于它的行为可能发生变化(例如,在新JVM的当前master分支中,该功能的实现方式有所不同)。