最佳答案
真正的…这已经被讨论了很多。
然而,这里有很多模棱两可的地方,并且提供了一些答案……包括在JAR /executor/driver配置或选项中复制JAR引用。
对于每个选项,应澄清以下模糊、不清楚和/或省略的细节:
--jars
SparkContext.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)之间的区别。记住这一点绝对很重要。