将 jars 添加到 spark 应用程序

Posted

技术标签:

【中文标题】将 jars 添加到 spark 应用程序【英文标题】:Adding jars to a spark app 【发布时间】:2015-08-05 19:03:23 【问题描述】:

当前,当我运行 spark-submit 时,我会提供一大堆 jar 路径,后跟“--jars”选项:

./spark\-submit --class "AppName" --master spark://server24:7077 --jars /path1.jar,path2.jar,path3.jar /pathAppName_2.10-1.0.jar arg1 arg2

在上面的命令中是否有一种更简洁的方法来包含 jars 文件,然后是 --jar ?

我尝试将它们添加到 spark-defaults.conf 中的 spark.driver.extraClassPath ,但这似乎没有帮助。否则在 spark 文档中找不到任何内容。

有人知道吗?

【问题讨论】:

【参考方案1】:

您可以在创建 SparkContext 时指定您所依赖的 jar:

val conf = new SparkConf()
             .setMaster('local[*]')
             .setAppName('example')
             .setJars(Array('/path/to/dependencies/first.jar',
                            '/path/to/dependencies/second.jar'))

val sc = new SparkContext(conf)

当您使用 spark-submit 的 --jars 参数时,这基本上是在幕后发生的事情。

【讨论】:

【参考方案2】:

我在我的 Java Spark 应用程序中解决这个问题的方法是使用 maven shade 插件创建一个包含所有外部依赖项的胖包装 jar。否则,如果您使用的是 scala,this link 可能会对您有所帮助。对于java,我会参考this。

就使用 Spark 开箱即用的另一种方法而言,我认为没有更清洁的方法 - 至少如果我从未找到的话。

【讨论】:

以上是关于将 jars 添加到 spark 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

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

PySpark 2.x:以编程方式将 Maven JAR 坐标添加到 Spark

将本地jar添加进本地仓库

将本地jar添加进本地仓库

spark-submit 应用程序第三方jar文件

在 jupyter notebook 中将自定义 jars 添加到 pyspark