如何在Apache Spark中安装pyspark.pandas及解决依赖兼容问题
解决PySpark 3.3.0依赖问题、pip未找到及包兼容方案
问题背景
启动PySpark 3.3.0后执行import pyspark.pandas as ps报错:
ImportError: Pandas >= 1.0.5 must be installed; however, it was not found.
执行pip install pandas时提示:
-bash: pip: command not found.
同时需解决:Spark自定义目录包导入、依赖与Python3.7.10兼容问题。
一、解决pip未找到并安装兼容版pandas
你的Spark绑定的是Python3.7.10,需针对该版本安装pip和依赖:
- 安装pip到Python3.7环境
python3.7 -m ensurepip --upgrade - 升级pip到兼容Python3.7的版本
pip 22.0+不再支持Python3.7,需指定版本:python3.7 -m pip install --upgrade pip==21.3.1 - 安装符合要求的pandas
直接指定最低版本,pip会自动匹配Python3.7兼容的最高可用版本:python3.7 -m pip install pandas>=1.0.5 - 验证
重启PySpark,执行import pyspark.pandas as ps,确认无报错。
二、在Spark自定义目录导入Python包
要让PySpark识别/home/ec2-user/bin/spark/latest/python/pyspark下的包,有三种方案:
- 临时生效(单次启动)
启动PySpark前执行:export PYTHONPATH=/home/ec2-user/bin/spark/latest/python/pyspark:$PYTHONPATH - 代码中动态添加路径
进入PyShell后执行:import sys sys.path.append("/home/ec2-user/bin/spark/latest/python/pyspark") - 永久生效(全局Spark环境)
在Spark的conf目录下编辑spark-env.sh(若无则创建),添加:export PYTHONPATH=/home/ec2-user/bin/spark/latest/python/pyspark:$PYTHONPATH
三、确保依赖与Python3.7.10兼容
- 始终使用Python3.7对应的pip
所有安装命令用python3.7 -m pip替代pip,确保依赖安装到Spark使用的Python环境中。 - 指定兼容的版本范围
部分包高版本不再支持Python3.7,安装时可限制版本:- pandas:
pandas>=1.0.5,<1.6.0(1.5.x是支持Python3.7的最后一个大版本) - numpy:
numpy>=1.18.5,<1.22.0(1.22+放弃Python3.7支持)
- pandas:
- 验证包兼容性
安装后可查看包的支持信息:
输出中的python3.7 -m pip show pandasRequires-Python字段会显示兼容的Python版本。
内容的提问来源于stack exchange,提问作者Luis Estrada
相关产品推荐
相关产品推荐

