1

我的 Spark 应用程序依赖于 adam_2.11-0.20.0.jar,每次我必须将我的应用程序与 adam_2.11-0.20.0.jar 打包为一个胖 jar 以提交给 spark。

比如我的fat jar是myApp1-adam_2.11-0.20.0.jar,

提交如下即可

spark-submit --class com.ano.adam.AnnoSp myApp1-adam_2.11-0.20.0.jar

它报告了异常

线程“主”java.lang.NoClassDefFoundError:

org/bdgenomics/adam/rdd 使用 --jars

spark-submit --class com.ano.adam.AnnoSp myApp1.jar --jars adam_2.11-0.20.0.jar

我的问题是如何使用 2 个单独的 jar 提交而不将它们打包在一起

spark-submit --class com.ano.adam.AnnoSp myApp1.jar adam_2.11-0.20.0.jar
4

1 回答 1

3

将所有 jars 添加到一个文件夹中,然后执行以下操作...

选项1 :

我认为这样做的更好方法是

$SPARK_HOME/bin/spark-submit \
--driver-class-path  $(echo /usr/local/share/build/libs/*.jar | tr ' ' ',') \
--jars $(echo /usr/local/share/build/libs/*.jar | tr ' ' ',') 

在这种方法中,您不会在类路径中错误地错过任何 jar,因此不会出现警告。

选项 2 见我的回答:

spark-submit-jars-arguments-wants-comma-list-how-to-declare-a-directory

选项 3:如果您想通过 API 添加 jar 来进行程序化提交,这是可能的。这里我不打算详细说明。

于 2016-11-25T03:13:38.917 回答