【发布时间】:2021-08-10 09:14:26
【问题描述】:
TLDR - 我想在 EMR 引导操作中运行命令 sudo yes | sudo pip3 uninstall numpy 两次,但它只运行一次。
我首先要说的是,我的目标是在 EMR 集群上运行支持 Pyspark 的 EMR 托管笔记本。由于各种原因,我还需要在集群上安装 pandas。首先,我遇到了一个问题,即默认 python3 安装中存在两个 numpy 版本,并且必须将它们都删除才能使用较新的版本(如在此线程中 - How do I have multiple versions of numpy installed on Amazon EMR and how to I delete the early versions?)。
如果我 ssh 进入主节点并执行两次sudo yes | sudo pip3 uninstall numpy,它可以工作:
[hadoop@ip-xxx-xx-xx-xxx ~]$ sudo yes | sudo pip3 uninstall numpy
Uninstalling numpy-1.21.1:
/usr/bin/f2py
/usr/local/bin/f2py
/usr/local/bin/f2py3
/usr/local/bin/f2py3.7
.......
.......
.......
/usr/local/lib64/python3.7/site-packages/numpy/typing/tests/test_runtime.py
/usr/local/lib64/python3.7/site-packages/numpy/typing/tests/test_typing.py
/usr/local/lib64/python3.7/site-packages/numpy/version.py
Proceed (y/n)? Successfully uninstalled numpy-1.21.1
[hadoop@ip-xxx-xx-xx-xxx ~]$ sudo yes | sudo pip3 uninstall numpy
Uninstalling numpy-1.16.5:
/usr/local/lib64/python3.7/site-packages/numpy
/usr/local/lib64/python3.7/site-packages/numpy-1.16.5-py3.7.egg-info
Proceed (y/n)? Successfully uninstalled numpy-1.16.5
我从 python3 安装中删除了 numpy,然后我可以正常安装 numpy 和 pandas。
当我想使用引导操作执行相同的操作时,就会出现问题。使用这个 bootstrap.sh 文件:
#!/bin/bash
sudo yes | sudo yum install python3-devel
sudo pip3 install cython
sudo pip3 install matplotlib
sudo yes | sudo pip3 uninstall numpy
sudo pip3 install pyspark boto3
sudo yes | sudo pip3 uninstall numpy
sudo pip3 install numpy
sudo pip3 install pandas
请注意,我在这里卸载了 numpy 两次,但它只是忽略了第二个 sudo yes | sudo pip3 uninstall numpy 命令!因为我没有卸载第二个 numpy 安装,所以会导致 pandas 安装损坏(再次,请参阅我之前链接到的线程)。为什么会这样?因为引导操作不起作用,并且无法通过 ssh 连接到从属节点,所以我的 pandas 安装已损坏,无法修复。
【问题讨论】:
-
确实我不应该安装 pyspark,因为它已经存在。但是当我删除它时,我仍然会得到一个损坏的 pandas 安装。为什么?因为由于某种原因,默认安装中存在两个不同版本的 numpy,所以 pandas 在安装时认为它具有最新版本。但是当实际导入 numpy 时,你会得到旧版本,这会导致依赖冲突。删除 numpy 两次并重新安装解决了这个问题,但我不能通过引导操作来做到这一点......
标签: python amazon-web-services pyspark amazon-emr