【问题标题】:NoSuchMethodError from dependencies when using spark-submit使用 spark-submit 时来自依赖项的 NoSuchMethodError
【发布时间】:2018-07-14 19:37:22
【问题描述】:

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

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

这是错误:

线程“主”java.lang.NoSuchMethodError 中的异常: org.apache.commons.cli.Options.addRequiredOption(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/ 字符串;)Lorg/apache/commons/cli/Options; 在 xyz.plenglin.aurum.spark.RunOnSpark$.main(RunOnSpark.scala:46) 在 xyz.plenglin.aurum.spark.RunOnSpark.main(RunOnSpark.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 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 它应该在哪里。

【问题讨论】:

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


    【解决方案1】:

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

    所以命令看起来像:

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

    【讨论】:

    • 正是我需要的,效果很好,谢谢。我正在使用 --jars 但它没有帮助。
    猜你喜欢
    • 2017-11-01
    • 2015-06-08
    • 2017-07-12
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2013-11-17
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多