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

1 に答える 1

1

spark avro は、spark 自体と互換性があるはずです。spark コアと spark sql (同じバージョンである必要があります) の間の互換性を修正してから、spark-avro の互換性のあるバージョンを選択してください ( https://github.com/databricks/spark-avro要件の部分を参照) 。

于 2016-03-18T20:06:16.530 に答える