当我尝试使用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上运行我的程序时,所有工作正常。这个问题不会出现。
答案 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的问题。