[新機能] AWS Glue 「Glue Version 2.0」のPythonモジュールの更新、pip3によるモジュールインストールがサポートされました!
先日の[新機能] 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 parametersのKeyに--additional-python-modules
、Valueにpyarrow==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 parametersのKeyに--python-modules-installer-option
、Valueにawswrangler==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モジュールの更新も容易になりますので、ぜひこの新機能のご利用をご検討ください。