PySpark运行报错:Worker与Driver端Python版本不一致求助
解决PySpark Driver与Worker Python版本不匹配问题
你遇到的问题是PySpark的Driver端Python版本(3.5)和Worker端(2.7)不一致,导致任务执行失败。从报错信息里能明确看到核心冲突:
Exception: Python in worker has different version 2.7 than that in driver 3.5, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.
核心原因
PySpark要求Driver和Worker使用完全相同的Python小版本(比如都是3.5,不能一个3.5一个2.7),你的环境里Worker默认调用了Python2.7,而Driver用的是Python3.5,两者版本不兼容导致任务崩溃。
具体解决步骤
1. 修正环境变量配置
你需要在.bashrc里明确指定PYSPARK_PYTHON和PYSPARK_DRIVER_PYTHON两个关键变量,强制Worker和Driver都使用Python3:
- 先通过终端命令
which python3找到你的Python3安装路径,比如输出可能是/usr/bin/python3 - 打开
.bashrc文件,替换原有的Spark相关配置为以下内容:export SPARK_HOME=/opt/spark # 指定PySpark全局使用的Python版本 export PYSPARK_PYTHON=/usr/bin/python3 export PYSPARK_DRIVER_PYTHON=/usr/bin/python3 # 修正PYTHONPATH(原配置的python3路径错误,Spark的Python库在python目录下) export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-*.zip:$PYTHONPATH - 执行
source ~/.bashrc让新配置立即生效
2. 验证配置有效性
- 在终端输入以下命令,确认变量已正确设置:
输出应该和你指定的Python3路径完全一致。echo $PYSPARK_PYTHON echo $PYSPARK_DRIVER_PYTHON - 重新运行你的PySpark代码,
rdd.collect()应该能正常执行了。
额外提醒
你原来的PYTHONPATH配置用了$SPARK_HOME/python3,这是错误的——Spark的Python依赖库默认存放在$SPARK_HOME/python目录下,所以必须修正为上述配置,确保PySpark能正确加载所需的依赖包。
内容的提问来源于stack exchange,提问作者Akash Kumar
相关产品推荐
相关产品推荐

