将jar添加到Spark作业 - spark-submit

将jar添加到Spark作业 - spark-submit

真的...已经讨论了很多。

然而,有很多歧义和一些答案提供...包括在jar / executor /驱动程序配置或选项中复制jar引用。

模糊和/或省略的细节

对于每个选项,应澄清含糊不清,不清楚和/或省略的细节:

  • ClassPath如何受到影响

    • 司机

    • 执行程序(用于运行的任务)

    • 一点也不

  • 分隔字符:逗号,冒号,分号

  • 如果提供的文件是自动分发的

    • 任务(每个执行者)

    • 用于远程驱动程序(如果以群集模式运行)

  • 接受的URI类型:本地文件,hdfs,http等

  • 如果复制公共位置,该位置是(hdfs,local?)

它影响的选项:

  1. --jars

  2. SparkContext.addJar(...) 方法

  3. SparkContext.addFile(...) 方法

  4. --conf spark.driver.extraClassPath=... 要么 --driver-class-path ...

  5. --conf spark.driver.extraLibraryPath=..., 要么 --driver-library-path ...

  6. --conf spark.executor.extraClassPath=...

  7. --conf spark.executor.extraLibraryPath=...

  8. 不要忘记,spark-submit的最后一个参数也是一个.jar文件。

我知道在哪里可以找到主要的spark文档,特别是关于如何提交,可用的选项以及JavaDoc。然而,这对我来说仍然有一些漏洞,尽管它也有部分回答。

我希望它不是那么复杂,有人可以给我一个清晰简洁的答案。

如果我从文档中猜测,似乎--jarsSparkContext addJaraddFile方法是自动分发文件的方法,而其他选项只是修改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

找到一篇关于另一篇文章答案的好文章。然而没有什么新学到的 海报确实很好地评论了本地驱动程序(纱线客户端)和远程驱动程序(纱线群集)之间的区别。记住这一点非常重要。


慕妹3146593
浏览 1730回答 3
3回答

慕村9548890

另一种方法spark 2.1.0是--conf spark.driver.userClassPathFirst=true在spark-submit期间使用,它通过优先使用用户添加到带有--jars选项的类路径的jar来改变依赖性加载的优先级,从而改变spark-job的行为。

胡子哥哥

与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驱动程序的类路径中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java