将jar添加到Spark作业 - spark-submit真的...已经讨论了很多。然而,有很多歧义和一些答案提供...包括在jar / executor /驱动程序配置或选项中复制jar引用。模糊和/或省略的细节对于每个选项,应澄清含糊不清,不清楚和/或省略的细节:ClassPath如何受到影响司机执行程序(用于运行的任务)都一点也不分隔字符:逗号,冒号,分号如果提供的文件是自动分发的任务(每个执行者)用于远程驱动程序(如果以群集模式运行)接受的URI类型:本地文件,hdfs,http等如果复制到公共位置,该位置是(hdfs,local?)它影响的选项:--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=...不要忘记,spark-submit的最后一个参数也是一个.jar文件。我知道在哪里可以找到主要的spark文档,特别是关于如何提交,可用的选项以及JavaDoc。然而,这对我来说仍然有一些漏洞,尽管它也有部分回答。我希望它不是那么复杂,有人可以给我一个清晰简洁的答案。如果我从文档中猜测,似乎--jars和SparkContext addJar,addFile方法是自动分发文件的方法,而其他选项只是修改ClassPath。假设为简单起见,我可以安全地使用3个主要选项同时添加其他应用程序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找到一篇关于另一篇文章答案的好文章。然而没有什么新学到的 海报确实很好地评论了本地驱动程序(纱线客户端)和远程驱动程序(纱线群集)之间的区别。记住这一点非常重要。
3 回答

慕村9548890
TA贡献1884条经验 获得超4个赞
另一种方法spark 2.1.0
是--conf spark.driver.userClassPathFirst=true
在spark-submit期间使用,它通过优先使用用户添加到带有--jars
选项的类路径的jar来改变依赖性加载的优先级,从而改变spark-job的行为。

胡子哥哥
TA贡献1825条经验 获得超6个赞
与jar和classpath相关的其他可配置Spark选项,在yarn
部署模式的情况下如下所示
从spark文档中,
spark.yarn.jars
包含要分发到YARN容器的Spark代码的库列表。默认情况下,YARN上的Spark将使用本地安装的Spark jar,但Spark jar也可以位于HDFS上的世界可读位置。这允许YARN将其缓存在节点上,这样每次应用程序运行时都不需要分发它。例如,要指向HDFS上的jar,请将此配置设置为hdfs:/// some / path。允许使用全球。
spark.yarn.archive
包含所需Spark Spark的存档,以便分发到YARN缓存。如果设置,则此配置将替换spark.yarn.jars,并且该存档将用于所有应用程序的容器中。存档应在其根目录中包含jar文件。与之前的选项一样,存档也可以托管在HDFS上以加速文件分发。
用户可以配置此参数以指定其jar,其中包含在Spark驱动程序的类路径中。
添加回答
举报
0/150
提交
取消