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

PySpark集群Python版本冲突:设置环境变量后仍报错求助

问题描述

Spark集群包含1台Driver节点和2台Worker节点,Driver节点使用Python 3.9。运行PySpark代码时出现版本不匹配错误:

RuntimeError: Python in worker has different version 3.6 than that in driver 3.9, PySpark cannot run with different minor versions. Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.

已在Driver和Worker节点设置环境变量:

export PYSPARK_PYTHON=/location/bin/python3.9
export PYSPARK_DRIVER_PYTHON=/location/bin/python3.9

但错误仍未解决,求可行解决方法。

解决方法
  • 确认环境变量生效范围
    在Worker节点执行echo $PYSPARK_PYTHON,检查输出是否为/location/bin/python3.9。如果输出不符,说明环境变量未正确生效:

    • 临时终端命令设置的变量会在进程重启后失效,需将变量写入全局配置文件(如/etc/profile、~/.bashrc或Spark的spark-env.sh)。
    • 写入后执行source /etc/profile(对应配置文件)刷新,再重启Spark Worker服务。
  • 检查Spark配置文件优先级
    Spark配置文件优先级高于系统环境变量,需确保spark-defaults.conf未覆盖Python路径:
    打开$SPARK_HOME/conf/spark-defaults.conf,添加或修改以下配置:

    spark.pyspark.python /location/bin/python3.9
    spark.pyspark.driver.python /location/bin/python3.9
    

    保存后重启整个Spark集群(Driver和Worker)。

  • 验证Worker节点Python路径有效性
    在Worker节点执行/location/bin/python3.9 --version,确认该路径存在且版本为3.9。若路径不存在,用whereis python3.9查找Worker节点上实际的Python3.9安装路径,替换配置中的路径。

  • 检查Worker进程环境变量
    部分场景下,Worker进程启动时不会加载用户bash配置,导致环境变量失效:
    用ps aux | grep spark-worker找到Worker进程PID,执行cat /proc/<PID>/environ | tr '\0' '\n' | grep PYSPARK,查看变量值是否正确。若不正确,需在Spark Worker启动脚本中直接指定环境变量。

  • 代码中强制指定Python路径
    若以上方法无效,可在PySpark代码开头直接设置:

    from pyspark.sql import SparkSession
    
    spark = SparkSession.builder \
        .appName("YourAppName") \
        .config("spark.pyspark.python", "/location/bin/python3.9") \
        .config("spark.pyspark.driver.python", "/location/bin/python3.9") \
        .getOrCreate()
    

内容的提问来源于stack exchange,提问作者Sherwin R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:15:04