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.py
,spark-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 添加到类路径的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Code,Java 扩展,如何将 jar 添加到类路径