You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark 3.5.3集成Delta Lake 3.2.0写入失败问题求助

问题排查与解决方法

1. 修复Assembly打包的Merge策略

你的Assembly配置中丢弃了所有META-INF目录下的文件,这会导致Delta Lake的数据源注册信息丢失——Spark是通过META-INF/services/org.apache.spark.sql.sources.DataSourceRegister文件识别delta数据源的,删除这些文件就会触发DATA_SOURCE_NOT_FOUND错误。

修改assemblyMergeStrategy,保留META-INF/services下的文件:

assemblyMergeStrategy in assembly := {
  case PathList("META-INF", "services", _*) => MergeStrategy.concat
  case PathList("META-INF", _*) => MergeStrategy.discard
  case _ => MergeStrategy.first
}

2. 确认Delta依赖的作用范围

你的delta-spark依赖默认是compile范围,Assembly打包时会被包含,但可以显式指定范围避免歧义:

libraryDependencies += "io.delta" %% "delta-spark" % "3.2.0" % "compile"

3. 集群运行时的配置补充

如果在集群环境运行,除了代码中的SparkSession配置,还可以在提交任务时通过--conf参数传入Delta所需配置,确保集群节点能正确识别Delta:

spark-submit \
  --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \
  --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog \
  --jar your-assembly.jar

4. 本地调试的临时验证方案

如果是本地调试,可暂时跳过Assembly打包,直接用sbt run运行任务,排除打包过程中的问题,确认Delta依赖是否能被正确加载。


内容的提问来源于stack exchange,提问作者William

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:03:22