Apache Spark创建Delta表报错:找不到delta数据源的解决咨询
错误原因
Spark默认未集成Delta Lake数据源插件,因此需要手动引入对应依赖包才能使用Delta表功能。Spark 3.5.0适配的Delta Lake版本建议选择2.4.0(版本需严格匹配,避免兼容性问题)。
修复方法
以下三种方法任选其一即可:
方法1:启动PySpark时指定依赖包
在命令行启动PySpark时,通过--packages参数加载Delta依赖:
pyspark --packages io.delta:delta-core_2.12:2.4.0
如果是提交Spark作业(使用spark-submit),则执行:
spark-submit --packages io.delta:delta-core_2.12:2.4.0 your_script.py
方法2:修改Spark配置永久添加依赖
编辑Spark安装目录下的conf/spark-defaults.conf文件(若无该文件,可复制spark-defaults.conf.template重命名),添加以下配置项:
spark.jars.packages io.delta:delta-core_2.12:2.4.0 spark.sql.extensions io.delta.sql.DeltaSparkSessionExtension spark.sql.catalog.spark_catalog org.apache.spark.sql.delta.catalog.DeltaCatalog
配置完成后,每次启动Spark都会自动加载Delta依赖,无需重复指定参数。
方法3:在代码中直接配置依赖
在构建SparkSession时加入依赖配置,适合脚本运行场景:
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("DeltaExample") \ .config("spark.jars.packages", "io.delta:delta-core_2.12:2.4.0") \ .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \ .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog") \ .getOrCreate() # 注意路径转义,原代码中的\Test需改为\\Test避免转义错误 csv_file = "F:\\Data\\Test\\file.csv" df_data = spark.read.csv(csv_file, header=True, inferSchema=True, sep=',') df_data.write.format("delta").save("F:\\Data\\out\\test_delta")
注意事项
- 确认Spark的Scala版本:Spark 3.5.0默认使用Scala 2.12,因此依赖包中的
_2.12需对应;若你的Spark基于Scala 2.13编译,需将依赖改为io.delta:delta-core_2.13:2.4.0。
内容的提问来源于stack exchange,提问作者userr
相关产品推荐
相关产品推荐

