AWS Glue ジョブで外部 Python ライブラリを使用するにはどうすればよいですか?

最終更新日: 2020 年 4 月 29 日

AWS Glue ジョブで外部 Python ライブラリを使用したいと考えています。

簡単な説明

Spark ETL ジョブで外部ライブラリを使用するには:

1.    ライブラリファイルを .zip ファイルにパッケージ化します (ライブラリが単一の .py ファイルに含まれていない場合)。

2.    パッケージを Amazon Simple Storage Service (Amazon S3) にアップロードします。

3.    ジョブまたはジョブ実行でライブラリを使用します

解決方法

以下は、Spark ETL ジョブで外部ライブラリを使用する方法の例です。Python シェルジョブで外部ライブラリを使用する場合は、独自の Python ライブラリの提供の手順に従います。

1.    boto3 用の Python 2 または Python 3 ライブラリを作成します。使用している AWS Glue バージョンが、ライブラリに選択した Python バージョンをサポートしていることを確認します。AWS Glue バージョン 1.0 では、Python 2 および Python 3 がサポートされています。詳細については、AWS Glue のバージョンを参照してください。

注意: Spark ジョブ用のライブラリと拡張モジュールは Python で記述する必要があります。C で記述された pandas などのライブラリはサポートしていません。

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 の site-packages ディレクトリのロケーションを確認します。

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 library path では、パッケージの Amazon S3 パスを入力します。詳細については、開発エンドポイントでの Python ライブラリのロードを参照してください。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合