最佳答案
真正的…这已经被讨论了很多。
然而,这里有很多模棱两可的地方,并且提供了一些答案……包括在JAR /executor/driver配置或选项中复制JAR引用。
对于每个选项,应澄清以下模糊、不清楚和/或省略的细节:
--jarsSparkContext.addJar(...)方法SparkContext.addFile(...)方法--conf spark.driver.extraClassPath=...或--driver-class-path ...--conf spark.driver.extraLibraryPath=...或--driver-library-path ...--conf spark.executor.extraClassPath=...--conf spark.executor.extraLibraryPath=...我知道在哪里可以找到Apache Spark主文档,特别是关于如何提交,可用的选项,以及JavaDoc。然而,这仍然给我留下了一些漏洞,尽管它也得到了部分回答。
我希望事情没有那么复杂,希望有人能给我一个清晰简明的答案。
如果我从文档中猜测,似乎--jars和SparkContext addJar和addFile方法是自动分发文件的方法,而其他选项只是修改类路径。
为了简单起见,我可以同时使用这三个主要选项添加其他应用程序JAR文件,这样的假设是否安全?
spark-submit --jar additional1.jar,additional2.jar \
--driver-library-path additional1.jar:additional2.jar \
--conf spark.executor.extraLibraryPath=additional1.jar:additional2.jar \
--class MyClass main-application.jar
我在回复另一个帖子上找到了一篇不错的文章。然而,什么也没学到。海报确实很好地说明了当地的司机 (yarn-client)和远程驱动程序 (yarn-cluster)之间的区别。记住这一点绝对很重要。