如何在 AWS Glue 作业中使用外部 Python 库?

上次更新时间:2020 年 4 月 29 日

我想要在 AWS Glue 作业中使用外部 Python 库。

简短描述

要在 Apache Spark ETL 作业中使用外部库:

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

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

3.    在作业或作业运行中使用库

解决方法

以下是如何在 Spark ETL 作业中使用外部库的示例。如果想要在 Python Shell 作业中使用外部库,请按照提供您自己的 Python 库中的步骤执行操作。

1.    为 boto3 创建一个 Python 2 或 Python 3 库。请确保所使用的 AWS Glue 版本支持您为库选择的 Python 版本。AWS Glue 版本 1.0 支持 Python 2 和 Python 3。有关更多信息,请参阅 AWS Glue 版本

注意:Spark 作业的库和扩展模块必须用 Python 编写。诸如 pandas 之类用 C 语言编写的库不受支持。

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

3.    使用 SSH 连接到 Linux 实例

4.    运行以下命令以安装 pip 和 boto3。有关更多信息,请参阅快速入门

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py
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 库


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?