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

Azure DevOps CI/CD中pyspark.testing模块导入失败问题求助

解决PySpark pyspark.testing 模块找不到的问题

问题原因

官方从PyPI发布的PySpark包(包括你安装的3.4.1版本)默认不包含pyspark.testing模块——查看Spark源码的setup.py会发现,该模块并未被加入正式发布的packages列表。而Databricks环境中的PySpark是经过定制优化的版本,额外包含了这个测试相关模块,因此你在本地和流水线的标准PySpark环境中会遇到找不到模块的错误。

解决方案

以下是几种在Azure DevOps流水线中可用的解决方法:

方法1:从Spark源码中引入testing模块

直接下载对应版本的Spark源码,将pyspark/testing目录加入Python路径:

- script: |
    export PYTHONPATH=${PYTHONPATH}:$(pwd)
    pip install pyspark==3.4.1
    # 下载与安装版本匹配的Spark源码
    curl -L https://github.com/apache/spark/archive/refs/tags/v3.4.1.tar.gz | tar xz
    # 将源码中的testing目录加入PYTHONPATH
    export PYTHONPATH=${PYTHONPATH}:$(pwd)/spark-3.4.1/python
    # 执行单元测试
    python -m unittest discover -s databricks/test/unittest -t .
  displayName:  'Run unittests'

方法2:复制testing模块到项目目录

如果不想依赖源码路径,可以直接将testing模块复制到项目的pyspark目录下(确保项目目录已在PYTHONPATH中):

- script: |
    export PYTHONPATH=${PYTHONPATH}:$(pwd)
    pip install pyspark==3.4.1
    # 下载对应版本的Spark源码
    curl -L https://github.com/apache/spark/archive/refs/tags/v3.4.1.tar.gz | tar xz
    # 复制testing模块到项目的pyspark目录
    cp -r spark-3.4.1/python/pyspark/testing $(pwd)/pyspark/
    # 执行单元测试
    python -m unittest discover -s databricks/test/unittest -t .
  displayName:  'Run unittests'

方法3:使用Databricks官方PySpark包(可选)

如果你的项目紧密依赖Databricks环境,可以直接安装Databricks提供的PySpark包替代官方版本(注意版本兼容性):

- script: |
    export PYTHONPATH=${PYTHONPATH}:$(pwd)
    # 安装Databricks PySpark包(以3.4.1对应版本为例)
    pip install databricks-pyspark==3.4.1
    python -m unittest discover -s databricks/test/unittest -t .
  displayName:  'Run unittests'

注意事项

  • 务必保证下载的Spark源码版本与你安装的PySpark版本完全一致,避免出现兼容性问题;
  • 方法3中的databricks-pyspark包版本需与Databricks Runtime版本对应,建议提前确认版本匹配关系。

内容的提问来源于stack exchange,提问作者Mario van Rooij

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:13:19