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

Azure Synapse Notebook导入delta-spark报ModuleNotFoundError求助

在Azure Synapse Notebook中导入delta-spark时出现ModuleNotFoundError: No module named 'pyspark.errors'的解决方法

问题描述

在Azure Synapse Notebook中尝试导入delta-spark包时触发ModuleNotFoundError: No module named 'pyspark.errors'错误。已确认delta-spark和pyspark包均已安装,且pyspark.sql.functions等基础模块能正常导入,但导入DeltaTable时因依赖pyspark.errors失败。相同版本的包在Databricks Notebook中可正常运行,尝试使用findspark未解决问题,推测是pyspark子包缺失而非pyspark本身的问题。

环境与代码信息

安装命令及输出

%pip install delta-spark

输出节选:

Requirement already satisfied: delta-spark in /nfs4/pyenv-fee9cba1-d59a-44ab-8b9e-957614b27f23/lib/python3.10/site-packages (3.0.0)  
Requirement already satisfied: pyspark<3.6.0,>=3.5.0 in /nfs4/pyenv-fee9cba1-d59a-44ab-8b9e-957614b27f23/lib/python3.10/site-packages (from delta-spark) (3.5.0)

导入代码及报错

import pyspark.sql.functions as F
from pyspark.sql import Window
from delta.tables import DeltaTable

输出节选:

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In [9], line 10
      8 import pyspark.sql.functions as F
      9 from pyspark.sql import Window
---&gt; 10 from delta.tables import DeltaTable

...

File ~/cluster-env/env/lib/python3.10/site-packages/delta/exceptions.py:20
     17 from typing import TYPE_CHECKING, Optional
     19 from pyspark import SparkContext
---&gt; 20 from pyspark.errors.exceptions import captured
     21 from pyspark.errors.exceptions.captured import CapturedException
     22 from pyspark.sql.utils import (
     23     AnalysisException,
     24     IllegalArgumentException,
     25     ParseException
     26 )

ModuleNotFoundError: No module named 'pyspark.errors'

Spark池环境配置

SPARK_HOME -> /opt/spark
PYTHONPATH -> /opt/spark/python/lib/pyspark.zip<CPS>/opt/spark/python/lib/py4j-0.10.7-src.zip<CPS>/opt/spark/python/lib/pyspark.zip<CPS>/opt/spark/python/lib/py4j-0.10.7-src.zip

原因分析

delta-spark 3.0.0要求依赖pyspark 3.5.0及以上版本,而pyspark.errors模块是在Spark 3.4版本后引入的。从Spark池的PYTHONPATH配置可以看出,运行时优先加载集群自带的pyspark(路径为/opt/spark),其版本大概率低于3.5.0,导致pip安装的高版本pyspark未被优先加载,从而找不到pyspark.errors模块。

解决方案

1. 升级Spark池版本

检查Azure Synapse Spark池的Spark版本,如果低于3.5.0,直接将Spark池升级到3.5.0及以上版本,确保集群自带的pyspark版本满足delta-spark的依赖要求。

2. 调整PYTHONPATH优先级

在Notebook开头添加以下代码,将pip安装的pyspark路径放到sys.path最前面,确保优先加载正确版本的pyspark:

import sys
import os

# 获取pip安装的pyspark所在路径(根据实际环境调整)
pip_pyspark_path = "/nfs4/pyenv-fee9cba1-d59a-44ab-8b9e-957614b27f23/lib/python3.10/site-packages/pyspark"
# 插入到路径最前方
sys.path.insert(0, pip_pyspark_path)

3. 通过集群库管理安装delta-spark

避免用户环境与集群环境的版本冲突,直接通过Azure Synapse的Spark池库管理功能安装delta-spark包,系统会自动匹配兼容的版本,确保与集群Spark版本一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:17:10