使用spark-submit

时间:2018-02-05 00:05:11

标签: scala apache-spark jar dependencies apache-commons-cli

我正在尝试使用Apache Spark 2.2.1向我的Scala 2.11群集提交JAR。我在我的JAR中包含了一些额外的依赖项,即 Apache Commons CLI ,并将它们打包成一个胖JAR。但是,当我提交Spark应用程序时,我得到NoSuchMethodError。我很确定它不是由于Scala版本的不一致,而是因为依赖项的奇怪之处。

该命令只是spark-submit myjar.jar [arguments]

这是错误:

  

线程“main”中的异常java.lang.NoSuchMethodError:   org.apache.commons.cli.Options.addRequiredOption(Ljava /郎/字符串; Ljava /郎/字符串; ZLjava /郎/   字符串;)Lorg /阿帕奇/公/ CLI /选项;         在xyz.plenglin.aurum.spark.RunOnSpark $ .main(RunOnSpark.scala:46)         在xyz.plenglin.aurum.spark.RunOnSpark.main(RunOnSpark.scala)         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)         at java.lang.reflect.Method.invoke(Method.java:498)         在org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $$ runMain(SparkSubmit.scala:775)         在org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1(SparkSubmit.scala:180)         在org.apache.spark.deploy.SparkSubmit $ .submit(SparkSubmit.scala:205)         在org.apache.spark.deploy.SparkSubmit $ .main(SparkSubmit.scala:119)         在org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

正常运行java -jar myjar.jar [arguments]无任何问题。在JAR中偷看,我看到org.apache.commons.cli.Options应该在哪里。

1 个答案:

答案 0 :(得分:0)

看起来我通过在--driver-class-path命令中添加spark-submit参数来修复它。

所以命令看起来像:

$ spark-submit --driver-class-path myjar.jar myjar.jar [arguments]