での Python ライブラリの使用AWS Glue - AWS Glue

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

での Python ライブラリの使用AWS Glue

純粋な Python で書かれていれば、AWS Glue ETL スクリプトで Python 拡張モジュールおよびライブラリを使用できます。Cライブラリ(例: pandas 現時点ではサポートしていません。また、他の言語で記述された拡張機能もサポートしていません。

取り込みのためのライブラリの圧縮

ライブラリが 1 つの .py ファイル、 .zip アーカイブ。パッケージディレクトリは、アーカイブのルートにあって、パッケージの __init__.py ファイルを含んでいる必要があります。そうすると、Python は通常の方法でパッケージをインポートできるようになります。

ライブラリが1つのPythonモジュールのみで構成されている場合は、 .py ファイルに保存する必要はありません。 .zip ファイル。

開発エンドポイントへの Python ライブラリのロード

異なる ETL スクリプトに異なるライブラリセットを使用している場合、各セットに別々の開発エンドポイントをセットアップするか、スクリプトを切り替えるたびに開発エンドポイントがロードするライブラリ .zip ファイルを上書きすることができます。

コンソールを使用して、作成時に開発エンドポイントに 1 つまたは複数のライブラリ .zip ファイルを指定できます。名前とIAM役割を割り当てた後、 スクリプトライブラリとジョブパラメータ(オプション) 完全な Amazon S3 ライブラリへのパス .zip ファイル( Pythonライブラリパス ボックス。たとえば、 と指定します。

s3://bucket/prefix/site-packages.zip

必要に応じてファイルへの複数のフルパスを指定できますが、以下のように、スペースなしでカンマで区切ります。

s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip

これらの .zip ファイルを後で更新する場合は、コンソールを使用して開発エンドポイントにそのファイルを再インポートできます。問題の開発者エンドポイントに移動し、その横のチェックボックスをオンにして、 ETL ライブラリの更新 から アクション メニュー。

同様の方法で、AWS Glue API を使用してライブラリファイルを指定できます。開発エンドポイントを作成する場合は、 CreateDevEndpoint アクション (Python: create_dev_endpoint)でライブラリへの 1 つ以上のフル パスを指定できます。 ExtraPythonLibsS3Path パラメーター、次のように表示される呼び出しで:

dep = glue.create_dev_endpoint( EndpointName="testDevEndpoint", RoleArn="arn:aws:iam::123456789012", SecurityGroupIds="sg-7f5ad1ff", SubnetId="subnet-c12fdba4", PublicKey="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtp04H/y...", NumberOfNodes=3, ExtraPythonLibsS3Path="s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip")

開発エンドポイントを更新する場合、 DevEndpointCustomLibraries オブジェクトおよび設定 UpdateEtlLibraries パラメータから True 電話するとき UpdateDevEndpoint (update_dev_endpoint).

開発エンドポイントで Zeppelin ノートブックを使用している場合、.zip ファイルから 1 つ以上のパッケージをインポートする前に、以下の PySpark 関数を呼び出す必要があります。

sc.addPyFile("/home/glue/downloads/python/yourZipFileName.zip")

ジョブまたは JobRun での Python ライブラリの使用

コンソールで新しいジョブを作成する場合は、 スクリプトライブラリとジョブパラメータ(オプション) すべて入力し Amazon S3 開発エンドポイントの作成時と同じ方法でのライブラリパス:

s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip

に電話する場合 CreateJob (create_job)では、 --extra-py-files デフォルト・パラメータ(例:

job = glue.create_job(Name='sampleJob', Role='Glue_DefaultRole', Command={'Name': 'glueetl', 'ScriptLocation': 's3://my_script_bucket/scripts/my_etl_script.py'}, DefaultArguments={'--extra-py-files': 's3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip'})

その後 JobRun を開始するときに、デフォルトのライブラリ設定を別のもので上書きできます。

runId = glue.start_job_run(JobName='sampleJob', Arguments={'--extra-py-files': 's3://bucket/prefix/lib_B.zip'})

Glueバージョン2.0による追加のPythonモジュールの指定

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

詳細については、「」を参照してください。起動時間を短縮したSpark ETLジョブの実行.