MacOS本地Jupyter运行PySpark执行collect时报Python版本不匹配错误如何解决
PySpark collect执行报错解决方案
错误原因
报错核心是PySpark驱动与工作节点的Python版本不兼容:当前Jupyter调用的驱动端Python版本为3.7,Spark默认调用的工作节点Python版本为3.6,PySpark要求两端Python次版本号必须一致才能正常运行。
解决步骤
1. 先获取你当前Jupyter使用的Python路径
在Jupyter的代码cell中执行以下代码,拿到准确的Python3.7路径:
import sys print(sys.executable)
复制输出的路径,替换后面配置中的占位路径。
2. 按需选择配置方式
临时生效(仅当前Notebook生效)
在初始化SparkSession的代码前,添加环境变量配置:
import os # 把引号内的路径替换为你上一步拿到的路径 os.environ["PYSPARK_PYTHON"] = "你拿到的Python3.7路径" os.environ["PYSPARK_DRIVER_PYTHON"] = "你拿到的Python3.7路径"
配置完成后再初始化Spark、运行原有代码即可。
永久生效(全局配置,无需每次重复设置)
打开Mac终端对应的配置文件:
- 使用zsh终端的用户,编辑
~/.zshrc文件 - 使用bash终端的用户,编辑
~/.bash_profile文件
在文件末尾添加两行配置:
export PYSPARK_PYTHON=你拿到的Python3.7路径 export PYSPARK_DRIVER_PYTHON=你拿到的Python3.7路径
保存文件后,执行source ~/.zshrc(zsh终端)或source ~/.bash_profile(bash终端)使配置生效,重启Jupyter Notebook即可。
3. 验证配置
配置完成后执行以下代码确认版本匹配:
import sys # 打印驱动端Python版本 print("驱动端版本:", sys.version.split(" ")[0]) # 打印工作端Python版本 print("工作端版本:", spark.sparkContext.pythonVer)
两者次版本号一致(均为3.7.x)即配置成功,再运行你原有代码不会再触发该报错。
内容的提问来源于stack exchange,提问作者dsp
相关产品推荐
相关产品推荐

