运行首个PySpark项目报Python版本不匹配错误,该如何解决?
PySpark Python版本不匹配报错解决方案
报错的核心原因是Spark驱动端(Driver)和执行端(Worker)的Python次版本号不一致,PySpark要求两端小版本必须完全相同,可通过以下几种方式解决:
方案1:单次运行临时指定(最快生效)
运行PySpark脚本前,先在终端执行环境变量配置命令,统一两端Python版本:
- Linux/macOS终端执行:
export PYSPARK_PYTHON=python3.7 export PYSPARK_DRIVER_PYTHON=python3.7
- Windows cmd执行:
set PYSPARK_PYTHON=python3.7 set PYSPARK_DRIVER_PYTHON=python3.7
如果提示找不到Python版本,可替换为Python的绝对路径,路径可通过以下命令查询:
- Linux/macOS:
which python3.7 - Windows:
where python3.7
也可以直接在PySpark代码开头、创建SparkSession之前配置环境变量:
import os # 替换为你要统一使用的Python路径 os.environ['PYSPARK_PYTHON'] = '/usr/local/bin/python3.7' os.environ['PYSPARK_DRIVER_PYTHON'] = '/usr/local/bin/python3.7' # 后续再写原有PySpark代码 from pyspark.sql import SparkSession # ... 其余原有代码
方案2:永久配置Spark环境变量
修改Spark安装目录下conf文件夹中的spark-env.sh(Linux/macOS)或spark-env.cmd(Windows),在文件末尾添加以下内容:
# 替换为对应Python路径 export PYSPARK_PYTHON=/usr/local/bin/python3.7 export PYSPARK_DRIVER_PYTHON=/usr/local/bin/python3.7
配置后重启Spark服务,后续所有PySpark任务都会自动使用指定的Python版本,无需每次重复配置。
方案3:统一两端Python版本(治本方案)
直接将Worker端的Python版本升级到3.7,或者将Driver端的Python版本降级到3.6,保证两端Python次版本号完全一致,集群环境下推荐使用该方案,避免后续出现版本适配问题。
注意:如果使用conda虚拟环境运行PySpark,直接将上述配置中的Python路径替换为虚拟环境内的Python二进制文件路径即可。
内容的提问来源于stack exchange,提问作者tamo007
相关产品推荐
相关产品推荐

