Spark: no se pudo encontrar la fuente de datos: avro

Spark: no se pudo encontrar la fuente de datos: avro

Cuando ejecuto el envío de Spark, aparece el siguiente error:

Excepción en el hilo "principal" org.apache.spark.sql.AnalysisException: no se pudo encontrar la fuente de datos: avro. Avro es un módulo de fuente de datos integrado pero externo desde Spark 2.4. Implemente la aplicación según la sección de implementación de la "Guía de origen de datos de Apache Avro".

pero todo funciona bien en IDE.

El frasco se construye usandoasamblea sbt.

construir.sbtSe ve como esto:

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
}

lo probé conversión scala2.11.12 y 2.12.8

el trabajo se ve así:

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

Respuesta1

Debe eliminar esta dependencia:

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

información relacionada