切换Conda环境后HADOOP_CONF_DIR消失致PySpark YARN报错的原因
解决Conda rnn环境下PySpark on YARN启动失败的问题
这个问题我之前也碰到过,核心原因就是切换到rnn环境后,Hadoop相关的环境变量没有被正确加载,导致PySpark找不到YARN需要的配置信息。下面是几个靠谱的解决办法:
方法1:激活rnn环境后手动配置Hadoop环境变量
每次切换到rnn环境后,先手动执行以下命令(记得把路径换成你自己的Hadoop安装路径):
export HADOOP_CONF_DIR=/path/to/your/hadoop/etc/hadoop export YARN_CONF_DIR=$HADOOP_CONF_DIR export HADOOP_HOME=/path/to/your/hadoop
执行完这些再启动pyspark --master yarn,应该就能正常连接YARN集群了。
方法2:把Hadoop环境变量写入Conda环境的自动激活脚本
如果不想每次都手动输命令,可以配置环境激活时自动加载变量:
- 找到rnn环境的激活脚本目录,一般是
~/anaconda3/envs/rnn/etc/conda/activate.d/(用miniconda的话就把anaconda3换成miniconda3) - 在这个目录下新建
env_vars.sh文件,内容如下:
#!/bin/sh export HADOOP_CONF_DIR=/path/to/your/hadoop/etc/hadoop export YARN_CONF_DIR=$HADOOP_CONF_DIR export HADOOP_HOME=/path/to/your/hadoop
- 给脚本添加执行权限:
chmod +x ~/anaconda3/envs/rnn/etc/conda/activate.d/env_vars.sh
之后每次执行source activate rnn时,这些环境变量就会自动生效了。
方法3:检查rnn环境的PySpark版本与依赖
有时候也可能是rnn环境里的PySpark版本和base环境不一致,或者依赖缺失。可以先在rnn环境里执行pip show pyspark查看版本,然后卸载重装成和base环境一致的版本:
pip uninstall pyspark -y pip install pyspark==<你的base环境PySpark版本号>
补充说明:base环境能正常运行,是因为系统或base环境的全局配置已经包含了Hadoop的环境变量,而Conda子环境默认不会继承所有系统环境变量,所以切换后才会出现找不到Hadoop配置的情况。
内容的提问来源于stack exchange,提问作者Jane Wayne
相关产品推荐
相关产品推荐

