2016-03-18 6 views
1

Ich benutze funken 1.3.0 und spark-avro 1.0.0. meine build.sbt-Datei sieht wie

aus
libraryDependencies ++=Seq(
    "org.apache.spark" % "spark-core_2.10" % "1.3.0" % "provided", 
    "org.apache.spark" % "spark-sql_2.10" % "1.5.2" % "provided", 
    "com.databricks" % "spark-avro_2.10" % "1.0.0", 
    "org.apache.avro" % "avro" % "1.7.7", 
    "org.apache.avro" % "avro-mapred" % "1.7.7", 
    "org.apache.spark" % "spark-hive_2.10" % "1.0.0" % "provided", 
    "joda-time" % "joda-time" % "2.9.2", 
    "org.joda" % "joda-convert" % "1.8.1", 
    "commons-codec" % "commons-codec" % "1.9" 
) 

Ich baue ein Fettglas mit dem Assembly-Plugin.

Allerdings manchmal mein Code schlägt mit dem Fehler unten. Wenn ich eine jar -tf Fooassembly.jar mache, kann ich viele .class Dateien im 'com/databricks/spark/avro' Ordner sehen. also bin ich mir nicht sicher, warum er sich für diese besondere Klasse beschwert hat.

Exception in thread "main" java.lang.NoClassDefFoundError: com/databricks/spark/avro/package$ 
     at com.databricks.spark.avro.DefaultSource.createRelation(DefaultSource.scala:78) 
     at org.apache.spark.sql.sources.ResolvedDataSource$.apply(ddl.scala:308) 
     at org.apache.spark.sql.DataFrame.save(DataFrame.scala:1123) 
     at org.apache.spark.sql.DataFrame.save(DataFrame.scala:1083) 
     at com.abhi.FormNameMatcher$$anonfun$main$1.apply(FormNameMatcher.scala:89) 
     at com.abhi.FormNameMatcher$$anonfun$main$1.apply(FormNameMatcher.scala:83) 
     at scala.collection.Iterator$class.foreach(Iterator.scala:727) 
     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) 
     at scala.collection.IterableLike$class.foreach(IterableLike.scala:72) 
     at scala.collection.AbstractIterable.foreach(Iterable.scala:54) 
     at com.abhi.FormNameMatcher$.main(FormNameMatcher.scala:83) 
     at com.abhi.FormNameMatcher.main(FormNameMatcher.scala) 
+0

nicht sicher, es ist verbunden, aber warum verwenden Sie Spark sql von 1.5.2 und Kern von 1.3.0? –

Antwort

1

Funken avro sollte mit Funken selbst kompatibel sein. Versuchen Sie, die Kompatibilität zwischen Spark Core und Spark sql zu beheben (sollte die gleiche Version sein) und wählen Sie dann kompatible Version von Spark-Avro (https://github.com/databricks/spark-avro siehe Anforderungen Teil)

Verwandte Themen