Spark - データソースが見つかりませんでした: avro

Spark - データソースが見つかりませんでした: avro

spark submit を実行すると、次のエラーが発生します。

スレッド「main」で例外が発生しました。org.apache.spark.sql.AnalysisException: データ ソース avro が見つかりませんでした。Avro は Spark 2.4 以降、組み込みですが外部データ ソース モジュールです。「Apache Avro データ ソース ガイド」のデプロイメント セクションに従ってアプリケーションをデプロイしてください。

しかし、IDE ではすべて正常に動作します。

jarは以下を使用して構築されますsbt アセンブリ

ビルド次のようになります:

val sparkVersion = "2.4.3"
val jacksonVersion = "2.8.7"

dependencyOverrides ++= Seq(
  "com.fasterxml.jackson.core" % "jackson-core" % jacksonVersion,
  "com.fasterxml.jackson.core" % "jackson-databind" % jacksonVersion,
  "com.fasterxml.jackson.module" %% "jackson-module-scala" % jacksonVersion
)


libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % sparkVersion % "provided" ,
  "org.apache.spark" %% "spark-sql" % sparkVersion % "provided",
  "org.apache.spark" %% "spark-hive" % sparkVersion % "provided",
  "org.apache.spark" %% "spark-avro" % "2.4.3",
  "io.confluent" % "kafka-avro-serializer" % "5.0.1",
  "org.apache.avro" % "avro" % "1.8.2"
)

assemblyMergeStrategy in assembly := {
  case PathList("META-INF", xs@_*) => MergeStrategy.discard
  case x => MergeStrategy.first
}

私は試してみましたscalaバージョン2.11.12 および 2.12.8

ジョブは次のようになります:

Seq(1, 2, 3).toDF("id")
      .write
      .format("avro")
      .mode(SaveMode.Overwrite)
      .save("testavro")

答え1

この依存関係を削除する必要があります:

"org.apache.avro" % "avro" % "1.8.2"

関連情報