在Apache Common Configuration上调用XMLConfiguration的setEntityResolver时,Spark提交失败

时间:2015-08-27 14:30:22

标签: apache-spark submit

当我尝试使用spark submit命令提交我的应用程序时遇到问题:

/bin/spark-submit --class MyClass myjar.jar

我以编程方式设置主网址。

我收到以下错误:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.configuration.XMLConfiguration.setEntityResolver(Lorg/xml/sax/EntityResolver;)V

当我在IDE上运行我的程序时,所有工作正常。这个问题不会出现。

2 个答案:

答案 0 :(得分:0)

看起来你提交的jar可能没有它所需的所有依赖项。解决方案是构建一个程序集jar,请参阅https://maven.apache.org/plugins/maven-assembly-plugin/usage.html(对于maven)或https://github.com/sbt/sbt-assembly(对于sbt)。

答案 1 :(得分:0)

我终于找到了问题的原因。

Spark使用hadoop-client-2.2.0,使用hadoop-common,使用common-configuration-1.6。

在我的应用程序中,我使用了common-configuration-v1.10,其中实现了XMLConfiguration.setEntityResolver。相反,在库的1.​​6版本中,该方法不存在。

当我跑步时:

/bin/spark-submit --class MyClass myjar.jar

加载了common-configuration-v1.6的XMLConfiguration.class,JVM找不到方法setEntityResolver

我已经解决了在我的应用程序中使用common-configuration-v2.0-beta1的问题。