[新機能] AWS Glue 「Glue Version 2.0」のPythonモジュールの更新、pip3によるモジュールインストールがサポートされました!

2020.08.12

先日の[新機能] AWS Glue 「Glue Version 2.0」のSpark ETL ジョブの開始時間が10倍速く、最小の請求時間は1分になりました!にて、「Glue Version 2.0」のSparkジョブの利用方法と起動時間について実際に確認してみした。

本日は、引き継き、「Glue Version 2.0」の新機能である、Pythonモジュールの更新、Pythonパッケージインストーラー(pip3)によるモジュールインストールの方法について実際に確認してみます。

ジョブレベルでの追加のPythonモジュールの指定のサポート

Glueバージョン2.0では、ジョブレベルで追加のPythonモジュールまたは異なるバージョンを提供することもできます。この--additional-python-modulesオプションをコンマ区切りのPythonモジュールのリストと共に使用して、新しいモジュールを追加したり、既存のモジュールのバージョンを変更したりできます。

新しいskit-learnモジュールを更新または追加するには

--additional-python-modules scikit-learn==0.21.3

--additional-python-modulesオプション内で、PythonホイールモジュールへのAmazon S3パスを指定できます。

--additional-python-modules s3://aws-glue-native-spark/tests/j4.2/ephem-3.7.7.1-cp37-cp37m-linux_x86_64.whl,s3://aws-glue-native-spark/tests/j4.2/fbprophet-0.6-py3-none-any.whl

AWS Glueは、Pythonパッケージインストーラー(pip3)を使用して追加のモジュールをインストールするには、python-modules-installer-optionに、pip3に指定された追加オプションを指定します。

既存のPythonモジュールの更新

「Glue Version 2.0」では、既存のPythonモジュールを任意のバージョンにアップデートできるようになりました。例えば、Glue Version 2.0では、pyarrowは0.16.0がインストール済みですが、これを1.0.0にアップデートすることが可能です。

では、pyarrowのバージョンアップを例に実際にやってみましょう。

pyarrowのバージョンを確認したところバージョン0.16.0でした。

バージョン0.16.0をバージョン1.0.0に更新するには、Job parametersKey--additional-python-modulesValuepyarrow==1.0.0を指定します。ジョブの設定画面では、以下のように設定します。

これでジョブを実行してpyarrowのバージョンを確認したところバージョン1.0.0に更新されたことが確認できました。

ジョブの実行時にPythonモジュールの更新していますが、pyarrowの更新では実行時間にほとんど影響していないようでした。上がpyarrowのモジュールをアップデートしたジョブ、下が更新していないジョブです。

Pythonパッケージインストーラー(pip3)によるモジュールインストール

「Glue Version 2.0」では、Pythonパッケージインストーラー(pip3)によるPythonモジュールインストールできるようになりました。例えば、Glue Version 2.0では、インストールされていないawswranglerを実行時にインストールすることが可能です。

では、awswranglerのインストールを例に実際にやってみましょう。

awswranglerのバージョン1.8.0をインストールするには、Job parametersKey--python-modules-installer-optionValueawswrangler==1.8.0を指定します。ジョブの設定画面では、以下のように設定します。

これでジョブを実行してawswranglerのバージョンを確認したところバージョン1.8.0に更新されたことが確認できました。もちろん依存関係のあるPythonモジュールであるpyarrowもバージョン1.0.0に更新されたことが確認できました。

最後に

従来、GlueでインストールされていないPythonモジュールを利用するには、ABIが一致した.whlファイルを作成、S3に配置して、ジョブの実行時にそのパスを指定する必要がありました。

Spark ETLジョブの実行時にPythonモジュールの更新やpip3によるモジュールインストールがサポートされると、利用したいPythonモジュールのバージョンを指定するだけで、Pythonモジュールのバージョンアップやインストールが可能になります。.whlファイルを作成が不要になれば新しいPythonモジュールの更新も容易になりますので、ぜひこの新機能のご利用をご検討ください。

合わせて読みたい