2016-03-18 13 views
1

私はspark 1.3.0とspark-avro 1.0.0を使用しています。私のbuild.sbtファイルは次のようになります

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" 
) 

私はアセンブリプラグインを使ってファットジャーを構築しています。

ただし、以下のエラーでマイコードが失敗することがあります。 jar -tf Fooassembly.jarを実行すると、 'com/databricks/spark/avro'フォルダに多数の.classファイルが表示されます。私はなぜこの特別なクラスに不平を言うのか分かりません。

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

それは接続されていませんが、なぜspark sql 1.5.2 1.3.0からコア? –

答えて

1

spark avroはスパーク自体と互換性があります。 spark-coreとspark-avroの互換性を修正してから、spark-avroの互換バージョンを選択してください(https://github.com/databricks/spark-avroの要件の部分を参照してください)