Spark本地环境使用Delta Tables遭遇NoClassDefFoundError问题求助
Spark 3.5.0 独立本地环境配置Delta Tables正确方案
错误根源分析
- 版本不兼容:你使用的Delta 3.1.0仅适配Spark 3.3/3.4,与Spark 3.5.0不匹配,导致
UnresolvedLeafNode类找不到的错误 - 配置参数拼写错误:
io.delaSparkSessionExtension应为io.delta.sql.DeltaSparkSessionExtension - pip安装方式错误:不能直接用Maven坐标安装delta-spark,需使用pip官方包名
正确配置步骤
1. 安装适配版本的delta-spark包
Spark 3.5.0需搭配Delta Lake 3.2.0及以上版本,执行以下命令安装:
pip install delta-spark==3.2.0
2. 启动spark-sql的正确命令
修正参数拼写并指定匹配的Delta包版本:
spark-sql --packages io.delta:delta-spark_2.12:3.2.0 \ --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" \ --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog"
3. 验证Delta表创建
启动成功后,执行以下SQL即可创建Delta表:
CREATE TABLE delta.`/tmp/delta-table` USING DELTA AS SELECT col1 as id FROM VALUES 0,1,2,3,4;
4. 处理ANTLR版本不匹配警告
若ANTLR版本冲突警告影响运行,可添加配置强制统一类路径优先级:
spark-sql --packages io.delta:delta-spark_2.12:3.2.0 \ --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" \ --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog" \ --conf "spark.driver.userClassPathFirst=true" \ --conf "spark.executor.userClassPathFirst=true"
内容的提问来源于stack exchange,提问作者WestCoastProjects
相关产品推荐
相关产品推荐

