为Amazon EMR上运行的PySpark安装pandas遇到问题
解决EMR v5.12.1中Bootstrap脚本安装Pandas失败的问题
我之前在EMR 5.x版本搭配老Python版本时也碰到过类似的包安装问题,尤其是Python 3.4这种已经停止维护的版本,和新版Pandas兼容性很差,给你几个针对性的解决方案:
1. 指定兼容Python 3.4的Pandas版本
Python 3.4已经不再被新版Pandas支持了,直接pip3 install pandas会尝试安装不兼容的版本导致失败。你需要安装最后一个支持Python 3.4的Pandas版本——0.24.2,命令如下:
pip3 install pandas==0.24.2
2. 确保安装到Spark能识别的路径
有时候pip默认安装的路径不在Spark的Python搜索路径里,你可以手动指定安装目录到系统级的Python包路径,比如:
pip3 install pandas==0.24.2 --target /usr/lib/python3.4/site-packages/
这个路径是EMR上Python 3.4默认的包目录,Spark启动时会自动扫描这里的包。
3. 提升安装权限
Bootstrap脚本默认以hadoop用户运行,有些系统目录需要root权限才能写入,加上sudo可以解决权限问题:
sudo pip3 install pandas==0.24.2
4. 加入日志排查问题
如果还是失败,建议在Bootstrap脚本里加入日志输出,方便事后排查:
echo "Starting Pandas installation at $(date)" >> /var/log/bootstrap_pandas.log sudo pip3 install pandas==0.24.2 >> /var/log/bootstrap_pandas.log 2>&1 pip3 list | grep pandas >> /var/log/bootstrap_pandas.log echo "Installation finished at $(date)" >> /var/log/bootstrap_pandas.log
之后你可以登录EMR节点,查看/var/log/bootstrap_pandas.log日志,确认安装过程中有没有报错,以及Pandas是否真的安装成功。
5. 验证Spark的Python环境
有时候Spark可能没有使用系统默认的Python 3.4,你可以在Spark作业里加入以下代码,查看当前Spark使用的Python路径:
import sys print("Spark使用的Python可执行文件:", sys.executable) print("Spark的Python搜索路径:", sys.path)
如果发现路径和你安装Pandas的路径不一致,就需要在Bootstrap脚本里把Pandas安装到对应的路径下。
内容的提问来源于stack exchange,提问作者Evan Zamir
相关产品推荐
相关产品推荐

