Spark.jars 未将 jars 添加到类路径

Posted

技术标签:

【中文标题】Spark.jars 未将 jars 添加到类路径【英文标题】:Spark.jars not adding jars to classpath 【发布时间】:2018-03-21 04:36:43 【问题描述】:

我正在尝试使用“spark.jars”属性将我的自定义 jar 添加到 spark 作业中。 虽然我可以阅读添加 jar 的日志中的信息,但是当我检查添加到类路径中的 jar 时,我没有找到它。以下是我也尝试过的功能。

1)spark.jars

2)spark.driver.extraLibraryPath

3)spark.executor.extraLibraryPath

4)setJars(Seq[String])

但没有人添加 jar。我在 HDP 中使用 spark 2.2.0,文件保存在本地。 请让我知道我可能做错了什么。

第一个选项对我有用。Spark.jars 正在添加 jar,因为它在 Spark UI 中显示。

【问题讨论】:

Add jars to a Spark Job - spark-submit的可能重复 【参考方案1】:

检查documentation for submitting jobs,在底部添加额外的非运行时jar

您可以将 jars 添加到 spark.jars 中的 SparkConf 或在运行时指定它们

./bin/spark-submit \
  --class <main-class> \
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \

所以试试 spark-submit --master yarn --jars the_jar_i_need.jar my_script.py

例如,我有一个需要 jar 的 pyspark 脚本 kafak_consumer.pyspark-streaming-kafka-0-8-assembly_2.11-2.1.1.jar

运行它的命令是

spark-submit --master yarn --jars spark-streaming-kafka-0-8-assembly_2.11-2.1.1.jar kafka_consumer.py

【讨论】:

我要的是外部 jar,而不是应用 jar。 试过了,但没有结果。【参考方案2】:

如果您需要执行器可用的外部 jar,您可以尝试spark.executor.extraClassPath。根据文档,它不应该是必要的,但它在过去帮助了我

附加到执行器的类路径之前的类路径条目。这主要是为了向后兼容旧版本的 Spark。用户通常不需要设置此选项。

文档:https://spark.apache.org/docs/latest/configuration.html

【讨论】:

早些时候尝试过,并且在我的问题中也提到了我已经尝试过的所有内容。

以上是关于Spark.jars 未将 jars 添加到类路径的主要内容,如果未能解决你的问题,请参考以下文章

在命令行上将多个 jar 添加到类路径 [重复]

Visual Studio Code,Java 扩展,如何将 jar 添加到类路径

在运行时将jar添加到类路径

Grails 没有从 BuildConfig.groovy 将 jars 添加到类路径

Maven:将外部 jar 文件夹添加到类路径 [重复]

无法加载 phonegap 地理定位插件。将.jar 添加到类路径?