跳至内容

如何对 EMR 集群上的 Python 库安装问题进行故障排除?

1 分钟阅读
0

我想对 Amazon EMR 集群上的 Python 库安装问题进行故障排除。

解决方法

Python 包在 Amazon EMR 上不可用

**注意:**默认情况下,Amazon EMR 会安装 Python。但是,Amazon EMR 不会安装所有 Python 库。

如果 Python 包在 Amazon EMR 上不可用,请登录到出现软件包缺失错误的节点。然后,运行类似于以下示例的命令,检查 Python 包是否已安装。

检查是否已安装特定软件包的命令示例:

sudo pip3 freeze | grep pandas;
sudo pip3 freeze | grep numpy

**注意:**将 pandasnumpy替换为您要检查的 Python 包。

预期输出:

pandas==1.3.5
numpy==1.21.6

查看集群上安装的所有 Python 库列表的命令示例:

sudo pip3 freeze

预期输出:

aws-cfn-bootstrap==2.0
beautifulsoup4==4.9.3
boto==2.49.0
click==8.1.3
docutils==0.14
jmespath==1.0.1   
numpy==1.21.6  
pandas==1.3.5
...

您也可以在 Python Shell 中运行类似于以下示例的命令:

import pandas as pd;
import numpy as np

如果上述命令返回诸如 ModuleNotFoundError: No module named 'python_library' 之类的错误,则表示该库未安装。

要在 Amazon EMR 集群上安装 Python 库,请运行以下命令:

sudo pip3 install pandas scipy sklearn

**注意:**将 pandas scipy sklearn 替换为您要安装的 Python 库。

或者您可以运行以下命令,从 .txt 文件中读取并安装 Python 包:

sudo pip3 install -r requirements.txt

注意:requirements.txt 替换为包含您要安装的 Python 包和库列表的 .txt 文件。

有关详细信息,请参阅 Python 打包网站上以下 Installing packages(安装软件包)。另请参阅在 EMR Studio 中安装并使用内核和库

在集群扩展期间,Python 包在新预置的核心或任务节点上不可用

在集群扩展期间,手动安装在单个节点上的 Python 包可能在新预置的核心或任务节点上不可用。

要确保软件包存在于新预置的节点中,请使用引导操作来安装库,而不是手动安装。

如果您要安装的软件包即使通过引导脚本也不可用,请检查引导日志以确定问题所在。

正在运行的实例

要查看正在运行的实例上的引导日志,请先使用 SSH 连接到主节点。然后,在以下位置检查引导日志中是否存在错误:/var/log/bootstrap-actions/bootStrapNumber/stderr/var/log/bootstrap-actions/bootStrapNumber/stdout

**注意:**在上述路径中,将 bootStrapNumber 替换为引导脚本编号。

新实例

对于新实例,引导日志将在您为 Amazon EMR 日志记录配置的 Amazon Simple Storage Service (Amazon S3) 存储桶中捕获。在 s3://DOC-EXAMPLE-LOG-BUCKET/cluster-id/node/instance-id/bootstrap-actions/bootStrapNumber/stdouts3://DOC-EXAMPLE-LOG-BUCKET/cluster-id/node/instance-id/bootstrap-actions/bootStrapNumber/stderr 中检查引导日志中是否存在错误

**注意:**在上述路径中,bootStrapNumber 表示引导脚本编号。

AWS 官方已更新 6 个月前