python 无法从 EMR 笔记本访问模块

python module not accessible from EMR notebook

我正在使用连接到我的集群的 EMR 笔记本进行一些实验。我需要安装一些 python 模块进行测试,特别是 spacy 和它的数据模块 en_core_web_sm.

我通过 ssh 连接到主节点和核心节点并分别下载了模块。但是我无法从我的 EMR 笔记本中导入。我收到以下错误:

An error was encountered:
No module named 'spacy'
Traceback (most recent call last):
ModuleNotFoundError: No module named 'spacy'

我知道有一种方法可以只针对 EMR notebook 的范围安装它们,但这在生产场景中是不够的,所以请避免按照本指南中提到的建议安装 notebook 的答案:https://aws.amazon.com/blogs/big-data/install-python-libraries-on-a-running-cluster-with-emr-notebooks/

如果我遗漏了一些设置步骤,请告诉我。感谢您的回复。

您可以在创建 EMR 时使用引导程序安装其他模块 https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-bootstrap.html

我能够通过将 bootstrap 脚本更改为使用 sudo 而不是 --user 来解决这个问题。 (您也可以手动更改 运行 下面的脚本)

在我运行宁

之前
pip3 install spacy --user
python3 -m spacy download en --user

我将该脚本更改为

sudo pip3 install spacy
sudo python3 -m spacy download en

要快速验证此解决方案,请从您的 EMR 笔记本发出以下命令(以比较前后)

sc.list_packages()

您应该会看到类似于此的输出

SparkSession available as 'spark'.
Package                    Version   
-------------------------- ----------
beautifulsoup4             4.9.0     
blis                       0.4.1     
boto                       2.49.0    
catalogue                  1.0.0     
certifi                    2020.4.5.2
chardet                    3.0.4     
cymem                      2.0.3     
en-core-web-sm             2.3.0     
idna                       2.9       
importlib-metadata         1.6.1     
jmespath                   0.9.5     
lxml                       4.5.0     
murmurhash                 1.0.2     
mysqlclient                1.4.2     
nltk                       3.4.5     
nose                       1.3.4     
numpy                      1.16.5    
pip                        9.0.1     
plac                       1.1.3     
preshed                    3.0.2     
py-dateutil                2.2       
python37-sagemaker-pyspark 1.3.0     
pytz                       2019.3    
PyYAML                     5.3.1     
requests                   2.24.0    
setuptools                 28.8.0    
six                        1.13.0    
soupsieve                  1.9.5     
spacy                      2.3.0     
srsly                      1.0.2     
thinc                      7.4.1     
tqdm                       4.46.1    
urllib3                    1.25.9    
wasabi                     0.6.0     
wheel                      0.29.0    
windmill                   1.6       
zipp                       3.1.0

这不是 IMO 的最佳解决方案,因为使用 sudo 后显示的第一个警告是

WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.

如果有人有更好的解决方案请免费post。