使用的Avro時,我不斷收到NoClassDefFoundError的火花外殼
java.lang.NoClassDefFoundError: org/apache/avro/mapred/AvroWrapper
一個數據幀對象上調用show()
時。我試圖通過外殼(火花外殼 - 主絲)做到這一點。我可以看到shell在創建DataFrame對象時識別模式,但是如果我對數據執行任何操作,嘗試實例化AvroWrapper
時總會拋出NoClassDefFoundError
。我試過在羣集的$HDFS_USER/lib
目錄中添加avro-mapred-1.8.0.jar
,甚至在啓動shell時使用--jar選項將其包含在內。這些選項都不起作用。任何建議將不勝感激。下面是示例代碼:
scala> import org.apache.spark.sql._
scala> import com.databricks.spark.avro._
scala> val sqc = new SQLContext(sc)
scala> val df = sqc.read.avro("my_avro_file") // recognizes the schema and creates the DataFrame object
scala> df.show // this is where I get NoClassDefFoundError
它似乎只是坐在那裏。將不會超越。 'org.apache.avro#avro-mapred添加爲依賴關係' 'com.databricks#spark-avro_2.10添加爲依賴關係' ':: resolving dependencies :: org.apache.spark#spark-submit -parent; 1.0' \t'confs:[default]' – Pudge
這很奇怪。你能粘貼你用來啓動spark-shell的整個命令嗎? –
對延遲響應抱歉我不得不將任務切換幾天。這裏是我正在運行的命令'spark-shell --master yarn --packages org.apache.avro:avro-mapred:1.7.7,com.databricks:spark-avro_2.10:2.0.1'。此外,不知道它是否有所作爲,但我們正在運行CDH 5.6。再次感謝。 – Pudge