2016-01-10 53 views
-1

尝试运行Spark时出现NoClassDefFound错误。我无法弄清楚这背后的原因。请帮忙。java.lang.NoClassDefFoundError:org/apache/spark/sql/SchemaRDD

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/SchemaRDD at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetMethodRecursive(Class.java:3048) at java.lang.Class.getMethod0(Class.java:3018) at java.lang.Class.getMethod(Class.java:1784) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:659) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:120) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.SchemaRDD at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 10 more

+0

[NOClassDefFound error while running a simple java program]可能重复(http://stackoverflow.com/questions/1619868/noclassdeffound-error-while-running-a-simple-java-program) – intboolstring

+0

检查是否该类在你的工作目录中。 – SeahawksRdaBest

回答

1

NoClassDefFoundError表示Java找不到它正在寻找的类。这通常意味着:

  1. 您错误地定义了类路径。
  2. Java正在查找并使用该jar的错误版本(可能是因为Maven依赖性地狱)。

1的解决方案是检查类路径:确保包含定义org.apache.spark.sql.SchemaRDD的jar。

2的解决方案是检查是否有Maven依赖关系,它依赖于(可传递地)定义该类的资源的较早版本。