AWS Glue ジョブのパラメータ - AWS Glue

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Glue ジョブのパラメータ

AWS Glue ジョブを作成するときは、Roleやなどの標準フィールドを設定しますWorkerType。[Argument] フィールド (コンソールの [ジョブパラメータ]) で追加の設定情報を指定できます。これらのフィールドでは、このトピックに記載されている引数 (パラメーター) AWS をGlue eジョブに提供できます。 AWS Glue Job API の詳細については、を参照してくださいジョブ

ジョブのパラメータを設定する

コンソールの [Job details] (ジョブの詳細) タブの [Job Parameters] (ジョブパラメータ) の見出しの下でジョブを設定できます。または、NonOverridableArgumentsジョブ上で設定したり、 AWS CLI DefaultArgumentsジョブ実行時に設定したりして、Argumentsジョブを設定することもできます。ジョブに設定された引数は、ジョブが実行されるたびに渡されますが、ジョブの実行に設定された引数は、その個々の実行に対してのみ渡されます。

次の例は、ジョブのパラメータを設定するために --arguments を使用してジョブを実行する構文です。

$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py"'

ジョブのパラメータへのアクセス

AWS Glue スクリプトを作成する場合、ジョブのパラメータ値にアクセスして独自のコードの動作を変更したい場合があります。そのためのヘルパーメソッドをライブラリに用意しています。これらのメソッドは、ジョブパラメータ値をオーバーライドするジョブ実行パラメータ値を解決します。複数の場所で設定されたパラメータを解決する場合、ジョブの NonOverridableArguments はジョブ実行の Arguments をオーバーライドしますが、ジョブの DefaultArguments はオーバーライドされます。

Python では:

Python ジョブでは、getResolvedParameters という名前の関数を用意しています。詳細については、「getResolvedOptions を使用して、パラメータにアクセスする」を参照してください。ジョブパラメータは sys.argv 変数から取得できます。

Scala では:

Scala ジョブでは、GlueArgParser という名前のオブジェクトを用意しています。詳細については、「AWS Glue Scala GlueArgParser API」を参照してください。ジョブパラメータは sysArgs 変数から取得できます。

ジョブパラメータリファレンス

AWS Glue は、ジョブおよびジョブ実行のスクリプト環境をセットアップするために使用できる以下の引数名を認識します。

--additional-python-modules

インストールする Python パッケージのセットを表すカンマ区切りのリスト。パッケージのインストールは、PyPI からでも、カスタムディストリビューションを提供することでも行えます。PyPI パッケージのエントリは、ターゲットパッケージの PyPI 名とバージョンを含む、package==version のような形式になります。カスタムディストリビューションエントリとは S3 のパスであり、ディストリビューションを指しています。

エントリは Python のバージョンマッチングを使用して、パッケージとバージョンの照合を行います。つまり、2 つの等号 (==) を使用する必要があります。バージョンマッチングには他の演算子もあります。詳細については「PEP 440」を参照してください。

モジュールインストールオプションを pip3 に渡すには、--python-modules-installer-option パラメータを使用します。

--auto-scale-within-microbatch

デフォルト値は false です。このパラメーターは、ストリーミングデータを一連のマイクロバッチで処理する AWS Glue ストリーミングジョブにのみ使用でき、auto スケーリングを有効にする必要があります。この値を false に設定すると、完了したマイクロバッチのバッチ持続時間の指数平滑移動平均線を計算し、この値をウィンドウサイズと比較して、エグゼキューターの数をスケールアップするかスケールダウンするかを決定します。スケーリングはマイクロバッチが完了したときにのみ行われます。この値を true に設定すると、マイクロバッチの実行中に Spark タスクの数が 30 秒間変わらない場合や、現在のバッチ処理がウィンドウサイズを超えると、スケールアップします。エグゼキューターが 60 秒以上アイドル状態であったり、バッチ持続時間の指数平滑移動平均線が短い場合、エクゼキューターの数は減少します。

--class

Scala スクリプトのエントリポイントとなる Scala クラス。これは、--job-languagescala に設定した場合にのみ適用されます。

--continuous-log-conversionPattern

連続ログ記録を有効にしたジョブのカスタム変換ログパターンを指定します。変換パターンは、ドライバーログとエグゼキューターログにのみ適用されます。AWS Glue の進行状況バーには影響しません。

--continuous-log-logGroup

連続ロギングが有効になっているジョブのカスタム Amazon CloudWatch ロググループ名を指定します。

--continuous-log-logStreamPrefix

CloudWatch 連続ロギングが有効なジョブのカスタムログストリームプレフィックスを指定します。

--customer-driver-env-vars および --customer-executor-env-vars

これらのパラメータは、各ワーカー (ドライバーまたはエグゼキューター) のオペレーティングシステムの環境変数をそれぞれ設定します。これらのパラメータは、Glue 上でプラットフォームやカスタムフレームワークを構築する場合に使用して、ユーザーが AWS Glue 上でジョブを作成できるようにすることができます。これら 2 つのフラグを有効にすると、ジョブスクリプト自体に同じロジックを注入しなくても、ドライバーおよびエグゼキューターにそれぞれ異なる環境変数を設定できます。

使用例

次の内容は、これらのパラメータを使用する例を示します。

"—customer-driver-env-vars", "CUSTOMER_KEY1=VAL1,CUSTOMER_KEY2=\"val2,val2 val2\"", "—customer-executor-env-vars", "CUSTOMER_KEY3=VAL3,KEY4=VAL4"

これらをジョブ実行の引数に設定することは、次のコマンドを実行することと同じです。

ドライバーに含まれるもの:

  • export CUSTOMER_KEY1=VAL1

  • export CUSTOMER_KEY2="val2,val2 val2"

エグゼキューターに含まれるもの:

  • export CUSTOMER_KEY3=VAL3

その後、ジョブスクリプト自体で os.environ.get("CUSTOMER_KEY1") または System.getenv("CUSTOMER_KEY1") を使用して環境変数を取得できます。

強制構文

環境変数を定義するとき、次の基準に従ってください。

  • 各キーには、CUSTOMER_ prefix が必要です。

    たとえば "CUSTOMER_KEY3=VAL3,KEY4=VAL4" の場合、KEY4=VAL4 は無視されて設定されません。

  • キーおよび値のペアは、それぞれ 1 つのカンマで区切る必要があります。

    例:"CUSTOMER_KEY3=VAL3,CUSTOMER_KEY4=VAL4"

  • 「値」にスペースやカンマが含まれている場合、引用符で囲んで定義する必要があります。

    例:CUSTOMER_KEY2=\"val2,val2 val2\"

この構文は、bash 環境変数の設定基準を忠実に模倣しています。

--datalake-formats

AWS Glue 3.0 以降のバージョンでサポートされています。

使用するデータレイクフレームワークを指定します。 AWS Glue は、指定したフレームワークに必要な JAR ファイルをに追加します。classpath詳細については、「AWS Glue ETL ジョブでのデータレイクフレームワークの使用」を参照してください。

次の中から 1 つまたは複数の値をカンマで区切って指定できます。

  • hudi

  • delta

  • iceberg

例えば、3 つのフレームワークすべてを指定するには、次の引数を渡します。

'--datalake-formats': 'hudi,delta,iceberg'
--disable-proxy-v2

サービスプロキシを無効にして、Amazon S3 CloudWatch、 AWS へのサービス呼び出しと AWS Glue VPC 経由のスクリプトからのサービス呼び出しを許可します。詳細については、「すべての AWS コールを VPC を経由するように設定する」を参照してください。サービスプロキシを無効にするには、このパラメータの値を true に設定します。

--enable-auto-scaling

値を true に設定した場合、Auto Scaling およびワーカーごとの課金がオンになります。

--enable-continuous-cloudwatch-log

AWS Glue ジョブのリアルタイムの連続ログ記録を有効にします。Apache Spark ジョブのログインをリアルタイムで表示できます。 CloudWatch

--enable-continuous-log-filter

連続ログ記録が有効であるジョブを作成または編集するときに、標準フィルタ (true) またはフィルタなし (false) を指定します。標準フィルタを選択すると、無用な Apache Spark ドライバー/エグゼキュータや Apache Hadoop YARN ハートビートのログメッセージは除外されます。フィルタなしを選択すると、すべてのログメッセージが表示されます。

--enable-glue-datacatalog

AWS Glue データカタログを Apache Spark Hive メタストアとして使用できるようにします。この機能を有効にするには、値を true に設定します。

--enable-job-insights

AWS Glue ジョブ実行インサイトによる追加のエラー分析監視を可能にします。詳細については、「AWS Glue ジョブ実行インサイトでのモニタリング」を参照してください。デフォルトでは、値は true に設定されており、ジョブ実行インサイトは有効になっています。

このオプションは、AWS Glue バージョン 2.0 および 3.0 で使用できます。

--enable-metrics

このジョブの実行のジョブプロファイリングに関するメトリクスの収集を有効にします。これらのメトリックスは、AWS Glueコンソールと Amazon CloudWatch コンソールで利用できます。このパラメータの値は関係ありません。この機能を有効にするには、このパラメータに任意の値を指定できますが、わかりやすくするために true が推奨されます。この機能を無効にするには、このパラメータをジョブ設定から削除します。

--enable-observability-metrics

AWS GlueコンソールとコンソールのJob Runs Monitoringページで、各ジョブ実行内で何が起こっているかについてのインサイトを生成するためのオブザーバビリティメトリクスのセットを有効にします。 Amazon CloudWatch この機能を有効にするには、パラメータの値を true に設定します。この機能を無効にするには、false に設定するか、ジョブ設定からこのパラメーターを削除します。

--enable-rename-algorithm-v2

EMRFS 名前変更アルゴリズムのバージョンをバージョン 2 に設定します。Spark ジョブがパーティションの動的な上書きモードを使用している場合、パーティションが重複して作成される可能性があります。例えば、s3://bucket/table/location/p1=1/p1=1 のような重複したパーティション作成されます。ここで、P1 は上書きされているパーティションです。名前変更アルゴリズムのバージョン 2 では、この問題が修正されています。

このオプションは、AWS Glue バージョン 1.0 でのみ使用できます。

--enable-s3-parquet-optimized-committer

Parquet データを Amazon S3 に書き込むために、EMRFS S3 最適化コミッターを有効にします。AWS Glue ジョブを作成または更新するときに、AWS Glue コンソールからパラメータ/値のペアを指定できます。値を true に設定すると、コミッターが有効になります。デフォルトでは、このフラグは AWS Glue 3.0 ではオン、 AWS Glue 2.0 ではオフになっています。

詳細については、「EMRFS S3 向けに最適化されたコミッターの使用」を参照してください。

--enable-spark-ui

true を設定した場合、Spark UI を使用して AWS Glue ETL ジョブのモニタリングとデバッグを行う機能が有効になります。

--executor-cores

並列に実行できる Spark タスクの数。このオプションは AWS Glue 3.0 以降でサポートされています。この値は、ワーカータイプの vCPU の数の 2 倍を超えないようにします。G.1X では 8、G.2X では 16、G.4X では 32、G.8X では 64 です。タスクの並列処理が増えるとメモリやディスクに負荷がかかるだけでなく、ソースシステムとターゲットシステムがスロットリングされる (例えば、Amazon RDS での同時接続数が増える) ため、この構成を更新するときは注意が必要です。

--extra-files

スクリプトを実行する前に、AWS Glue がスクリプトの作業ディレクトリにコピーする、設定ファイルなどの追加ファイルへの Amazon S3 のパス。複数の値はコンマ (,) で区切られた完全なパスでなければなりません。ディレクトリパスではなく、個別のファイルのみがサポートされています。このオプションは Python Shell ジョブタイプではサポートされていません。

--extra-jars

スクリプトを実行する前に、AWS Glue が Java クラスパスに追加する Java .jar ファイルへの Amazon S3 パス。複数の値はコンマ (,) で区切られた完全なパスでなければなりません。

--extra-py-files

スクリプトを実行する前に、AWS Glue が Python パスに追加する Python モジュールへの Amazon S3 パス。複数の値はコンマ (,) で区切られた完全なパスでなければなりません。ディレクトリパスではなく、個別のファイルのみがサポートされています。

--job-bookmark-option

ジョブブックマークの動作を制御します。次のオプション値を設定できます。

‑‑job‑bookmark‑option 値 説明
job-bookmark-enable 以前に処理されたデータを追跡します。ジョブが実行されると、最後のチェックポイントから新しいデータを処理します。
job-bookmark-disable 常にデータセット全体を処理します。以前のジョブからの出力の管理は、ユーザーが行います。
job-bookmark-pause 最後のブックマークの状態は更新せずに、最後に正常に実行された後の増分データ、または次のサブオプションで識別される範囲内のデータを処理します。以前のジョブからの出力の管理は、ユーザーが行います。2 つのサブオプションは以下のとおりです。
  • job-bookmark-from <from-value> は、指定された実行 ID を含む最後に成功した実行までに処理されたすべての入力を表す実行 ID です。対応する入力は無視されます。

  • job-bookmark-to <to-value> は、指定された実行 ID を含む最後に成功した実行までに処理されたすべての入力を表す実行 ID です。<from-value> によって識別される入力を除く対応する入力は、ジョブによって処理されます。この入力より後の入力も処理対象から除外されます。

このオプションが設定されている場合、ジョブのブックマークの状態は更新されません。

サブオプションはオプションです。ただし、使用する場合は、両方のサブオプションを指定する必要があります。

例えば、ジョブブックマークを有効にするには、以下の引数を渡します。

'--job-bookmark-option': 'job-bookmark-enable'
--job-language

スクリプトプログラミング言語。この値は scala または python のいずれかである必要があります。このパラメータが存在しない場合、デフォルトで python が使用されます。

--python-modules-installer-option

--additional-python-modules でモジュールをインストールする場合に、pip3 に渡されるオプションを定義するプレーンテキストの文字列。コマンドラインの場合と同様に、スペースで区切り、先頭にダッシュを付けてオプションを指定します。使用方法の詳細については、「AWS Glue 2.0 の pip を使用した追加 Python モジュールのインストール」(Python モジュールのサポートの追加) を参照してください。

注記

Python 3.9 を使用する場合、このオプションは AWS Glue ジョブではサポートされません。

--scriptLocation

ETL スクリプトが (s3://path/to/my/script.py 形式で) 置かれている Amazon Simple Storage Service (Amazon S3) の場所。このパラメータは、JobCommand オブジェクトで設定されているスクリプトの場所を上書きします。

--spark-event-logs-path

Amazon S3 パスを指定します。Spark UI モニタリング機能を使用する場合、AWS Glue は Spark イベントログを、30 秒ごとに、この Amazon S3 パスの (Spark UI イベントを保存するための一時ディレクトリとして使用可能な) バケットにフラッシュします。

--TempDir

ジョブの一時ディレクトリとして使用できるバケットへの Amazon S3 のパスを指定します。

例えば、一時ディレクトリを設定するには、以下の引数を渡します。

'--TempDir': 's3-path-to-directory'
注記

AWS Glue では、リージョンにバケットが存在していない場合、ジョブの一時バケットが作成されます。このバケットは、パブリックアクセスを許可する場合があります。Amazon S3 のバケットは、パブリックアクセスブロックを設定するように変更するか、そのリージョンのすべてのジョブが完了した後に削除するかのいずれかが可能です。

--use-postgres-driver

この値を true に設定した場合、Amazon Redshift の JDBC ドライバーとの競合を避けるために、クラスパスにある Postgres JDBC ドライバーが優先されます。このオプションは、AWS Glue バージョン 2.0 でのみ使用可能です。

--user-jars-first

この値を true に設定した場合、クラスパス内にあるお客様の追加 JAR ファイルが優先されます。このオプションは、AWS Glue バージョン 2.0 以降でのみ使用可能です。

--conf

Spark の設定パラメータを制御します。高度なユースケース向けです。

--encryption-type

レガシーパラメータ。対応する動作は、セキュリティ設定を使用して設定する必要があります。セキュリティ設定の詳細については、「AWS Glue​ によって書き込まれたデータの暗号化」を参照してください。

AWS Glue では内部で以下のような引数を使用するので、それは絶対に使用しないでください。

  • --debug — AWS Glue 内部用。設定する必要はありません。

  • --mode — AWS Glue 内部用。設定する必要はありません。

  • --JOB_NAME — AWS Glue 内部用。設定する必要はありません。

  • --endpoint — AWS Glue 内部用。設定する必要はありません。

AWS Glue はサイト固有のカスタマイズを実行するための sitecustomize を使用した Python の site モジュールによる環境のブートストラップをサポートします。独自の初期化関数のブートストラップは、高度なユースケースにのみ推奨され、AWS Glue 4.0 ではベストエフォートベースでサポートされています。

環境変数のプレフィックス GLUE_CUSTOMER は、お客様専用です。