AWS EMR:Zeppelin 从 python 2.7 获取 numpy 版本而不是更高版本

Posted

技术标签:

【中文标题】AWS EMR:Zeppelin 从 python 2.7 获取 numpy 版本而不是更高版本【英文标题】:AWS EMR: Zeppelin taking numpy version from python 2.7 instead of higher version 【发布时间】:2021-10-20 18:01:26 【问题描述】:

我的 EMR (5.26.0) 集群上有 python 2.7(默认)和 python 3.6,下面是我的引导脚本。我正在安装 numpy 版本 1.18.5,我可以看到它正在安装在引导日志中。但是在 python3 包中,我看到它正在选择来自 Python 2.7 的 numpy 1.14.5。如果您看到下面的屏幕截图,我可以看到版本 1.18.5 dist。 python包目录中的文件,但二进制文件用于但实际的numpy版本有1.14.5的文件。

我正在使用 zeppelin notebook,并通过设置以下变量将我的解释器 python 和 pyspark 属性更改为使用 python 3,但是

PYSPARK_PYTHON = '/usr/bin/python3'
PYSPARK_DRIVER_PYTHON = '/usr/bin/python3'

# In zeppelin interpretor
zeppelin.pyspark.python='/usr/bin/python3'
#!/usr/bin/env bash
python3 -m pip uninstall botocore --user
python3 -m pip uninstall boto3 --user


sudo python3 -m pip install --upgrade pip

sudo python3 -m pip install botocore==1.13.38 --user

sudo python3 -m pip install h5py 
sudo python3 -m pip install keras==2.3.0 
sudo python3 -m pip install keras_applications==1.0.8 --no-deps
sudo python3 -m pip install keras_preprocessing==1.1.2 --no-deps

sudo python3 -m pip install tqdm 

sudo python3 -m pip install s3fs 
sudp python3 -m pip install ipaddress==1.0.23 
sudo python3 -m pip install netaddr==0.7.19 

sudo python3 -m pip install matplotlib

sudo python3 -m pip install pyarrow
sudo python3 -m pip install boto3
sudo python3 -m pip install torch==1.6.0
sudo python3 -m pip install --upgrade scipy==1.4.1
sudo python3 -m pip install torchvision
sudo python3 -m pip install pydot
sudo python3 -m pip install xlrd
sudo python3 -m pip install xlwt
sudo python3 -m pip install pandas
sudo python3 -m pip install scikit-learn
sudo python3 -m pip install scikit-multilearn 
sudo python3 -m pip install wrapt==1.12.0
sudo python3 -m pip install tensorflow==2.3.0
sudo python3 -m pip install tensorflow-gpu==2.0.0
sudo python3 -m pip install numpy==1.18.5


另外,当我列出包时,我看到它列出了1.18.5,但是 numpy version 命令显示1.14.5

如何强制 Python 选择更高版本的 numpy?

【问题讨论】:

您使用哪种模式?纱线客户端或纱线集群? 集群模式@zjffdu 【参考方案1】:

终于让它与 emr-5.31.0 及以下引导配置一起使用,5.31+ 默认为 Python 3 和 numpy 1.16.5,即使 env 中存在 python 2。所以我得到了默认的更高版本的 numpy,它解决了我的交叉依赖问题。


sudo python3 -m pip install h5py==2.10.0
sudo python3 -m pip install keras==2.3.1
sudo python3 -m pip install keras_applications==1.0.8 --no-deps
sudo python3 -m pip install keras_preprocessing==1.1.0 --no-deps

sudo python3 -m pip install tqdm==4.40.0

sudo python3 -m pip install s3fs 
sudo python3 -m pip install ipaddress==1.0.23
sudo python3 -m pip install netaddr==0.7.19 

sudo python3 -m pip install matplotlib

sudo python3 -m pip install pyarrow==0.12.1
sudo python3 -m pip install boto3
sudo python3 -m pip install torch==1.6.0
sudo python3 -m pip install --upgrade scipy==1.4.1
sudo python3 -m pip install torchvision
sudo python3 -m pip install pydot==1.4.1
sudo python3 -m pip install xlrd
sudo python3 -m pip install xlwt
sudo python3 -m pip install pandas==1.2.0
sudo python3 -m pip install scikit-learn
sudo python3 -m pip install scikit-multilearn 
sudo python3 -m pip install wrapt==1.12.0
sudo python3 -m pip install tensorboard==2.1.0
sudo python3 -m pip install tensorflow==2.1.0
sudo python3 -m pip install tensorflow-estimator==2.1.0


【讨论】:

那么,您使用的是 python 2 的 numpy 版本吗?可以分享configs.json吗? , PYSPARK_PYTHON" 是 "/usr/bin/python" ? EMR 5.31 带有 numpy 1.16,在 spark 解释器中我设置了这些属性 "PYSPARK_PYTHON":"/usr/bin/python3" "PYSPARK_DRIVER_PYTHON":"/usr/bin/python3"

以上是关于AWS EMR:Zeppelin 从 python 2.7 获取 numpy 版本而不是更高版本的主要内容,如果未能解决你的问题,请参考以下文章

SparkSession 应用程序源代码配置属性未覆盖 AWS EMR 默认值上的 JupyterHub 和 Zeppelin

是否可以通过 IAM 角色限制从 EMR (zeppelin) 访问 S3 数据?

如何为 zeppelin 用户授予正确的权限

如何让 Zeppelin 在 EMR 集群上干净地重新启动?

如何设置 Zeppelin 以使用远程 EMR Yarn 集群

将 pyspark pandas_udf 与 AWS EMR 一起使用时出现“没有名为‘pandas’的模块”错误