Spark – Datenquelle konnte nicht gefunden werden: avro

Spark – Datenquelle konnte nicht gefunden werden: avro

Wenn ich Spark Submit ausführe, erhalte ich den folgenden Fehler:

Ausnahme im Thread „main“ org.apache.spark.sql.AnalysisException: Datenquelle konnte nicht gefunden werden: avro. Avro ist seit Spark 2.4 ein integriertes, aber externes Datenquellenmodul. Bitte stellen Sie die Anwendung gemäß dem Bereitstellungsabschnitt des „Apache Avro Data Source Guide“ bereit.

aber in der IDE funktioniert alles einwandfrei.

jar wird erstellt mitSBT-Montage.

build.sbtsieht aus wie das:

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
}

Ich habe es versucht mitscalaVersion2.11.12 und 2.12.8

der Job sieht folgendermaßen aus:

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

Antwort1

Sie müssen diese Abhängigkeit entfernen:

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

verwandte Informationen