Parece que não consigo escrever usando o formato delta do meu trabalho spark, mas não tenho certeza do que estou perdendo. Estou usando spark 3.5.3 e deltalake 3.2.0.
Meu erro:
Exception in thread "main" org.apache.spark.SparkClassNotFoundException: [DATA_SOURCE_NOT_FOUND] Failed to find the data source: delta. Please find packages at `https://spark.apache.org/third-party-projects.html`.
Minha construção.sbt:
name := "test"
version := "0.1"
scalaVersion := "2.12.18"
logLevel := Level.Warn
assembly / logLevel := Level.Warn
clean / logLevel := Level.Warn
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.5.3" % "provided"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.5.3" % "provided"
libraryDependencies += "io.delta" %% "delta-spark" % "3.2.0"
assembly / test := {}
assemblyJarName := s"${name.value}-${version.value}.jar"
assemblyMergeStrategy in assembly := {
case PathList("META-INF", _*) => MergeStrategy.discard
case _ => MergeStrategy.first
}
e meu trabalho:
val spark = SparkSession
.builder()
.appName("test")
.config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
.config(
"spark.sql.catalog.spark_catalog",
"org.apache.spark.sql.delta.catalog.DeltaCatalog"
)
.getOrCreate()
val df = getData(spark)
val path = "/home/user/testtable"
df.write.format("delta").mode("overwrite").save(path)
spark.stop()
Alguma ideia? Estou olhando para o delta lake quickstart, mas não estou vendo nada que esteja faltando. Sinto que há algo óbvio, no entanto.