Spark - 데이터 소스를 찾지 못했습니다: avro

Spark - 데이터 소스를 찾지 못했습니다: avro

Spark submit을 실행하면 다음과 같은 오류가 발생합니다.

"main" 스레드에서 예외가 발생했습니다. org.apache.spark.sql.AnalyticException: 데이터 소스를 찾지 못했습니다: avro. Avro는 Spark 2.4부터 내장되어 있지만 외부 데이터 소스 모듈입니다. "Apache Avro 데이터 소스 가이드"의 배포 섹션에 따라 애플리케이션을 배포하세요.

하지만 IDE에서는 모든 것이 잘 작동합니다.

jar는 다음을 사용하여 만들어집니다.SBT 어셈블리.

build.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
}

나는 그것을 시도했다스칼라 버전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"

관련 정보