首页  >  文章  >  Java  >  如何使用 Spark-Submit 将 JAR 文件添加到 Spark 作业中?执行此操作有哪些不同的选项和注意事项?

如何使用 Spark-Submit 将 JAR 文件添加到 Spark 作业中?执行此操作有哪些不同的选项和注意事项?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-16 17:41:03740浏览

How are JAR files added to a Spark job using Spark-Submit,  and what are the different options and considerations for doing so?

使用 Spark-Submit 将 JAR 文件添加到 Spark 作业

使用 Spark-Submit 时,有多个选项可用于将 JAR 文件添加到 Spark 作业,每个选项都包含它本身对类路径、文件分布和优先级的影响。

ClassPath 效果

Spark-Submit 通过以下选项影响 ClassPath:

  • spark.driver.extraClassPath 或--driver-class-path:为驱动程序节点指定额外的类路径。
  • spark.executor.extraClassPath:为工作节点指定额外的类路径。

用于要包含的文件在两个 ClassPath 上,都需要在 both 标志中指定。

文件分布

文件分布取决于执行模式:

  • 客户端模式: Spark 通过 HTTP 服务器将文件分发到工作节点。
  • 集群模式: Spark 分发文件,您必须通过 HDFS 或其他共享存储手动使它们可供所有工作节点使用。

接受的 URI 格式

Spark-Submit 支持以下 URI 前缀进行文件分发:

  • file:: 由驱动程序 HTTP 服务器提供服务。
  • hdfs:, http:, https:, ftp:: 从指定的 URI 拉取。
  • local:: 必须是每个工作节点上的本地文件。

受影响的选项

问题中提到的选项影响 JAR 文件处理,如下所示:

  • --jars 和SparkContext.addJar:不将 JAR 添加到 ClassPaths 的等效选项。
  • SparkContext.addFile:用于不是运行时依赖项的任意文件。
  • --conf spark.driver.extraClassPath 或 - -driver-class-path:驱动程序类路径修改的别名。
  • --conf spark.driver.extraLibraryPath 或 --driver-library-path:驱动程序库路径的别名。
  • -- conf spark.executor.extraClassPath:用于无法包含在 über JAR 中的运行时依赖项。
  • --conf spark.executor.extraLibraryPath:指定 JVM 的 java.library.path 选项。

优先级

直接在 SparkConf 上设置的属性具有最高优先级,其次是 Spark-Submit 标志,然后是 Spark-defaults.conf 中的选项。因此,代码中设置的任何值都将覆盖相应的标志或选项。

同时添加 JAR 文件

在客户端模式下,可以安全地使用所有三个主要选项添加 JAR 文件:

spark-submit --jars additional1.jar,additional2.jar \
  --driver-class-path additional1.jar:additional2.jar \
  --conf spark.executor.extraClassPath=additional1.jar:additional2.jar \
  --class MyClass main-application.jar

但是,在集群模式下,您应该只使用 --jars 添加文件,并自己手动将它们分发到工作节点。应避免将 JAR 文件传递​​给 --driver-library-path 等冗余参数。

以上是如何使用 Spark-Submit 将 JAR 文件添加到 Spark 作业中?执行此操作有哪些不同的选项和注意事项?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn