При запуске Spark Submit возникает следующая ошибка:
Исключение в потоке "main" org.apache.spark.sql.AnalysisException: Не удалось найти источник данных: avro. Avro является встроенным, но внешним модулем источника данных, начиная с Spark 2.4. Разверните приложение в соответствии с разделом по развертыванию "Руководства по источникам данных Apache Avro".
но в IDE все работает отлично.
jar создан с использованиемсборка sbt.
сборка.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"