真正的…这已经被讨论了很多。
然而,这里有很多模棱两可的地方,并且提供了一些答案……包括在JAR /executor/driver配置或选项中复制JAR引用。
模糊的和/或省略的细节
对于每个选项,应澄清以下模糊、不清楚和/或省略的细节:
如何影响ClassPath 司机 执行程序(用于运行的任务) 这两个 一点也不 分隔字符:逗号、冒号、分号 如果提供的文件是自动分发的 对于任务(给每个执行程序) 用于远程驱动程序(如果在集群模式下运行) 接受的URI类型:本地文件,HDFS, HTTP等。 如果复制到一个公共位置,该位置在哪里(HDFS,本地?)
影响的选项:
——罐子 SparkContext.addJar(…)方法 SparkContext.addFile(…)方法 ——配置spark.driver.extraClassPath =…或者——driver-class-path… ——配置spark.driver.extraLibraryPath =…,或者——driver-library-path… ——配置spark.executor.extraClassPath =… ——配置spark.executor.extraLibraryPath =… 不要忘记,spark-submit的最后一个参数也是一个.jar文件。
我知道我可以在哪里找到Apache Spark的主要文档,特别是关于如何提交,可用的选项,以及JavaDoc。然而,这仍然给我留下了一些漏洞,尽管它也得到了部分回答。
我希望事情没有那么复杂,希望有人能给我一个清晰简明的答案。
如果我要从文档中猜测,似乎——jars、SparkContext addJar和addFile方法是自动分发文件的方法,而其他选项只是修改ClassPath。
为了简单起见,我可以同时使用这三个主要选项添加其他应用程序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)之间的区别。记住这一点绝对很重要。