我正在尝试使用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
应该在哪里。
答案 0 :(得分:0)
看起来我通过在--driver-class-path
命令中添加spark-submit
参数来修复它。
所以命令看起来像:
$ spark-submit --driver-class-path myjar.jar myjar.jar [arguments]