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"