如何在我的 AWS Glue 1.0 或 0.9 ETL 任务中使用外部 Python 库?

2 分钟阅读
0

我想在我的 AWS Glue 1.0 或 0.9 提取、转换、加载 (ETL) 任务中使用外部 Python 库。

简短描述

要在 Apache Spark ETL 任务中使用外部库,请执行以下操作:

1.    请将库文件打包到 .zip 文件中(除非库包含在单个 .py 文件中)。

2.    将包上传至 Amazon Simple Storage Service (Amazon S3)。

3.    在任务或任务运行中使用库

解决方法

以下是如何在Spark ETL AWS Glue 1.0 或 0.9 ETL 任务中使用外部库的示例。

**重要提示:**如果您想在 AWS Glue 2.0 任务中使用外部库,请参阅如何在我的 AWS Glue 2.0 ETL 任务中使用外部 Python 库? 如果想要在 Python Shell 任务中使用外部库,请按照提供您自己的 Python 库中的步骤执行操作。

1.    为 boto3 创建一个 Python 2 或 Python 3 库。请确保所使用的 AWS Glue 版本支持您为库选择的 Python 版本。AWS Glue 1.0 版本支持 Python 2 和 Python 3,而 AWS Glue 0.9 版本仅支持 Python 2。

**注意:**Spark 任务的库和扩展模块必须用 Python 编写。诸如 pandas 之类用 C 语言编写的 Glue 0.9 或 1.0 不受支持。如需使用用 C 语言编写的库,请将 AWS Glue 升级到至少 2.0 版本并使用 --additional-python-modules 选项。更多相关信息,请参阅如何在我的 AWS Glue 2.0 ETL 任务中使用外部 Python 库?

2.    启动 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例

3.    使用 SSH 连接到 Linux 实例

4.    运行以下命令以安装 Python 和 Boto3。有关更多信息,请参阅 Quickstart 的 Boto3 文档。

sudo yum groupinstall "Development Tools"
sudo yum -y install openssl-devel
wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9/
./configure --enable-optimizations
sudo make install
sudo pip install boto3

5.    确认 Python 站点包目录的位置:

python -m site

您会收到类似如下内容的输出:

/usr/lib/python3.6/site-packages

6.    请将外部库文件打包到 .zip 文件中,除非库包含在单个 .py 文件中。.zip 文件必须包含一个 __init__.py 文件且软件包目录必须位于存档的根目录处。该 __init__.py 文件可以为空。有关更多信息,请参阅适用于软件包的 Python 文档。

示例:

cd /usr/lib/python3.6/site-packages
sudo zip -r -X "/home/ec2-user/site-packages.zip" *

7.    将程序包上传到 Amazon S3:

aws s3 cp /home/ec2-user/site-packages.zip s3://awsexamplebucket/

8.    在任务或任务运行中使用库

要在开发终端节点中使用外部库,请执行以下操作:

1.    如前面所述,打包库并将文件上传至 Amazon S3。

2.    创建开发终端节点。对于 Python 库路径,请输入包的 Amazon S3 路径。有关更多信息,请参阅在开发终端节点中加载 Python 库


相关信息

结合使用 Python 库与 AWS Glue

AWS 官方
AWS 官方已更新 2 年前