Spark Worker节点Python环境版本不匹配问题求助
验证环境变量实际生效状态
登录新增Worker节点,执行以下命令确认环境变量:echo $PYSPARK_PYTHON echo $PYSPARK_DRIVER_PYTHON which python确保输出的Python路径是Anaconda创建的3.10环境路径(比如
/home/xxx/anaconda3/envs/py310/bin/python)。若路径不对,说明.bashrc配置未全局生效,可将环境变量迁移到.bash_profile或/etc/profile中,再重新登录节点验证。检查Spark Worker进程的环境变量加载
重启Worker节点的Spark服务后,用ps aux | grep spark-worker获取Worker进程PID,执行:cat /proc/<PID>/environ | tr '\0' '\n' | grep PYSPARK确认进程内的PYSPARK变量是否指向Python3.10。如果进程仍加载旧变量,修改Worker节点本地Spark安装目录下的
spark-env.sh,添加:export PYSPARK_PYTHON=/path/to/anaconda3/envs/py310/bin/python export PYSPARK_DRIVER_PYTHON=/path/to/anaconda3/envs/py310/bin/python之后重启Worker服务:
stop-worker.sh再start-worker.sh spark://master-ip:7077确认Anaconda环境的pyspark匹配性
在Worker节点激活Python3.10环境,检查pyspark版本:source activate py310 pip list | grep pyspark若未安装或版本与集群Spark不匹配,安装对应版本的pyspark,比如集群为Spark3.3.0则执行:
pip install pyspark==3.3.0修正系统默认Python软链接
若Spark仍调用系统默认Python,可修改软链接指向Anaconda3.10环境:sudo rm /usr/bin/python sudo ln -s /path/to/anaconda3/envs/py310/bin/python /usr/bin/python执行
python --version确认版本为3.10提交测试任务验证版本一致性
在主节点创建test.py文件:import sys from pyspark.sql import SparkSession spark = SparkSession.builder.appName("PythonVersionCheck").getOrCreate() rdd = spark.sparkContext.parallelize([1,2,3]) print("Worker Python Version:", rdd.map(lambda x: sys.version).collect()) spark.stop()提交任务:
spark-submit --master spark://master-ip:7077 --deploy-mode client test.py查看输出,确认所有Worker返回的版本均为3.10,若新增节点仍显示3.7,重新排查上述配置步骤。
内容的提问来源于stack exchange,提问作者ensberg

