2016-01-10 54 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依賴關係,它依賴於(可傳遞地)定義該類的資源的較早版本。