AWS Glue で Spark ジョブに関するジョブプロパティの構成 - AWS Glue

AWS Glue で Spark ジョブに関するジョブプロパティの構成

AWS Glue コンソールでジョブを定義するときに、AWS Glue ランタイム環境をコントロールするためのプロパティの値を指定します。

Spark ジョブのジョブプロパティの定義

次のリストは、Spark ジョブのプロパティについて説明しています。Python シェルジョブのプロパティについては、「Python シェルジョブのジョブプロパティの定義」を参照してください。ストリーミング ETL ジョブのプロパティについては、「ストリーミング ETL ジョブのジョブプロパティの定義」を参照してください。

プロパティは、AWS Glue コンソールの [Add job] (ジョブの追加) ウィザードに表示された順に一覧表示されます。

名前

UTF-8 文字を 255 文字以内で入力します。

説明

オプションとして最大 2,048 文字の説明を提示します。

IAM ロール

ジョブ実行とデータストアへのアクセスに使用されるリソースの認可に使用する IAM ロールを指定します。AWS Glue でジョブを実行するためのアクセス権限の詳細については、AWS Glue のアイデンティティとアクセスの管理 を参照してください。

タイプ

ETL ジョブの種類。これは、選択するデータソースの種類に基づいて自動的に設定されます。

AWS Glue バージョン

AWS Glue のバージョンによって、ジョブで使用できる Apache Spark および Python のバージョンが次の表に指定されているように決まります。

AWS Glue バージョン サポートされている Spark および Python のバージョン
4.0
  • Spark 3.3.0

  • Python 3.10

3.0
  • Spark 3.1.1

  • 「Python 3.7」

2.0
  • Spark 2.4.3

  • 「Python 3.7」

1.0
  • Spark 2.4.3

  • Python 2.7

  • Python 3.6

0.9
  • Spark 2.2.1

  • Python 2.7

[言語]

ETL スクリプト内のコードでジョブのロジックを定義します。Python または Scala でスクリプトを記述できます。ジョブが実行するスクリプトを AWS Glue によって生成するのか、それとも自分で提供するのかを選択できます。Amazon Simple Storage Service (Amazon S3) でスクリプト名と場所を指定します。パスのスクリプトディレクトリと同じ名前のファイルが存在していないことを確認します。スクリプトの記述の詳細については、「AWS Glue プログラミングガイド」を参照してください。

ワーカータイプ

以下のワーカータイプを使用できます。

AWS Glue ワーカーで利用可能なリソースは DPU 単位で測定されます。DPU は処理能力を相対的に測定するもので、4 個の vCPU のコンピューティング性能と 16 GB のメモリで構成されています。

  • G.1X – このタイプを選択する場合は、[Number of workers] (ワーカー数) の値も指定します。各ワーカーは、84 GB のディスク (約 34 GB の空き) を備えた 1 DPU (4 vCPU、16 GB のメモリ) にマッピングされます。データ変換、結合、クエリなどのワークロードには、ほとんどのジョブを実行するためのスケーラブルで費用対効果の高い方法として、このワーカータイプをお勧めします。

  • G.2X – このタイプを選択する場合は、[Number of workers] (ワーカー数) の値も指定します。各ワーカーは、128 GB のディスク (約 77 GB の空き) を備えた 2 DPU (8 vCPU、32 GB のメモリ) にマッピングされます。データ変換、結合、クエリなどのワークロードには、ほとんどのジョブを実行するためのスケーラブルで費用対効果の高い方法として、このワーカータイプをお勧めします。

  • G.4X – このタイプを選択する場合は、[Number of workers] (ワーカー数) の値も指定します。各ワーカーは、256 GB のディスク (約 235 GB の空き) を備えた 4 DPU (16 vCPU、64 GB のメモリ) にマッピングされます。ワークロードに含まれる変換、集約、結合、クエリへの要求が非常に厳しいジョブには、このワーカータイプをお勧めします。このワーカータイプは、AWS Glue バージョン 3.0 以降の Spark ETL ジョブでのみ使用可能で、以下の AWS リージョンで使用できます。米国東部 (オハイオ)、米国東部 (バージニア北部)、米国西部 (オレゴン)、アジアパシフィック (シンガポール)、アジアパシフィック (シドニー)、アジアパシフィック (東京)、カナダ (中部)、欧州 (フランクフルト)、欧州 (アイルランド)、欧州 (ストックホルム)。

  • G.8X – このタイプを選択する場合は、[Number of workers] (ワーカー数) の値も指定します。各ワーカーは、512 GB のディスク (約 487 GB の空き) を備えた 8 DPU (32 vCPU、128 GB のメモリ) にマッピングされます。ワークロードに含まれる変換、集約、結合、クエリへの要求が非常に厳しいジョブには、このワーカータイプをお勧めします。このワーカータイプは、AWS Glue バージョン 3.0 以降の Spark ETL ジョブでのみ使用可能で、G.4X ワーカータイプでサポートされているのと同じ AWS リージョンで使用できます。

  • G.025X – このタイプを選択する場合は、[Number of workers] (ワーカー数) の値も指定します。各ワーカーは、84 GB のディスク (約 34 GB の空き) を備えた 0.25 DPU (2 vCPU、4 GB のメモリ) にマッピングされます。少量のストリーミングジョブには、このワーカータイプをお勧めします。このワーカータイプは、AWS Glue バージョン 3.0 のストリーミングジョブでのみ使用できます。

ETL ジョブの実行に使用された DPU の数に基づいて時間あたりの料金が請求されます。詳細については、AWS Glue 料金表ページを参照してください。

AWS Glue バージョン 1.0 以前のジョブでは、コンソールを使用してジョブを設定し、[Worker type] (ワーカータイプ) に [Standard] (標準) を指定する場合は、[Maximum capacity] (最大キャパシティー) が設定され、[Number of workers] (ワーカー数) は [Maximum capacity] (最大キャパシティー) から 1 を引いた値になります。AWS Command Line Interface (AWS CLI) または AWS SDK を使用する場合は、[Max capacity] (最大キャパシティー) パラメータを指定することも、[Worker type] (ワーカータイプ) と [Number of workers] (ワーカー数) の両方を指定することもできます。

AWS Glue バージョン 2.0 以降のジョブでは、[最大キャパシティ] の指定はできません。代わりに、[Worker type] (ワーカータイプ) と [Number of workers] (ワーカー数) を指定します。

リクエストしたワーカーの人数

ほとんどのワーカータイプで、ジョブの実行時に割り当てられるワーカーの数を指定する必要があります。

ジョブのブックマーク

ジョブ実行時に AWS Glue が状態情報を処理する方法を指定します。以前に処理されたデータの記憶、状態情報の更新、または状態情報の無視を指定できます。詳細については、「ジョブのブックマークを使用した処理済みデータの追跡」を参照してください。

ジョブ実行キューイング

サービスクォータが原因でジョブをすぐに実行できないとき、ジョブを後で実行するようにキューに入れるかどうかを指定します。

チェックすると、ジョブ実行キューイングがジョブ実行に対して有効になります。入力されていない場合、ジョブ実行はキューイングの対象になりません。

この設定がジョブ実行で設定された値と一致しない場合、ジョブ実行フィールドの値が使用されます。

Flex 実行

AWS Studio や API を使用してジョブを設定する際、標準のジョブ実行クラスあるいは柔軟なジョブ実行クラスを指定することができます。ジョブには、さまざまな度合いの優先順位や時間的な制約を設定することができます。標準の実行クラスは、素早くジョブを起動する必要があり、専用のリソースが必要な時間的な制約のあるワークロードに最適です。

柔軟な実行クラスは、実稼働前のジョブ、テスト、1 回限りのデータの読み込みなど、緊急性のないジョブに適しています。柔軟なジョブの実行は、AWS Glue バージョン 3.0 以降と G.1X または G.2X ワーカータイプを使用するジョブでサポートされています。

Flex ジョブの実行は、任意の時点で実行されているワーカーの数に基づいて課金されます。柔軟なジョブの実行では、ジョブ数を追加または削除することができます。Max Capacity * Execution Time という単純な計算で課金されるのではなく、各ワーカーがジョブ実行中に実行された時間が含まれます。請求は (Number of DPUs per worker * time each worker ran) の合計です。

詳細は、「AWS Studio のヘルプパネル」、または「ジョブ」や「ジョブ実行」を参照してください。

再試行回数

失敗した場合に AWS Glue がジョブを自動的に再起動する回数を 0〜10 の間で指定します。タイムアウト制限に達したジョブは再起動されません。

ジョブのタイムアウト

最大の実行時間 (分) を設定します。バッチジョブのデフォルト値は 2880 分 (48 時間) です。ジョブ実行時間がこの制限値を超えると、ジョブ実行状態は TIMEOUT に変わります。

ストリーミングジョブのタイムアウト値は 7 日または 10080 分未満である必要があります。値を空白のままにすると、メンテナンスウィンドウを設定していない場合、ジョブは 7 日後に再起動されます。メンテナンスウィンドウを設定している場合、7 日後にメンテナンスウィンドウ中に再起動されます。

ジョブタイムアウトのベストプラクティス

ジョブは実行時間に基づいて課金されます。予期しない課金を避けるには、ジョブの予想実行時間に適切なタイムアウト値を設定してください。

詳細プロパティ
スクリプトのファイル名

ジョブの一意のスクリプト名。[タイトルがないジョブ] という名前を付けられません。

スクリプトパス

スクリプトの Amazon S3 ロケーション。パスは s3://bucket/prefix/path/ の形式で指定する必要があります。末尾にスラッシュ (/) を付けてファイルは含めないでください。

ジョブのメトリクス

このジョブの実行時に Amazon CloudWatch メトリクスの作成を有効または無効にします。プロファイリングデータを表示するには、このオプションを有効にする必要があります。メトリクスを有効にして表示する方法の詳細については、「ジョブのモニタリングとデバッグ」を参照してください。

ジョブのオブザーバビリティメトリクス

このジョブの実行時に追加のオブザーバビリティ CloudWatch メトリクスの作成を有効にします。詳細については、「AWS Glue オブザーバビリティメトリクスを使用したモニタリング」を参照してください。

連続ログ記録

Amazon CloudWatch への連続ログ記録を有効にします。このオプションが有効になっていない場合、ログはジョブの完了後にのみ使用できます。詳細については、AWS Glue ジョブの連続ログ記録 を参照してください。

Spark UI

このジョブをモニタリングするために Spark UI の使用を有効にします。詳細については、「AWS Glue ジョブ用の Apache Spark ウェブ UI の有効化」を参照してください。

Spark UI ログパス

Spark UI が有効になっているときにログを書き込むパス。

Spark UI のログ記録とモニタリングの設定

以下のオプションのいずれかを選択します。

  • スタンダード: AWS Glue ジョブの実行 ID をファイル名として使用してログを書き込みます。AWS Glue コンソールで Spark UI モニタリングを有効にします。

  • レガシー: 「spark-application-{timestamp}」をファイル名として使用してログを書き込みます。Spark UI モニタリングをオンにしないでください。

  • スタンダードとレガシー: スタンダードロケーションとレガシーロケーションの両方にログを書き込みます。AWS Glue コンソールで Spark UI モニタリングを有効にします。

最大同時実行数

このジョブで許可される同時実行の最大数を設定します。デフォルト は 1 です。このしきい値に達すると、エラーが返されます。指定できる最大値は、サービスの制限によってコントロールされます。たとえば、新しいインスタンスの開始時に前回のジョブがまだ実行されている場合、同じジョブの 2 つのインスタンスが同時に実行されないようにエラーを戻すことができます。

一時的なパス

AWS Glue がスクリプトを実行するときに一時的な中間結果が書き込まれる Amazon S3 の作業ディレクトリの場所を指定します。パスの一時ディレクトリと同じ名前のファイルが存在していないことを確認します。このディレクトリは、Amazon Redshift に対して AWS Glue が読み取りと書き込みをするときに使用します。また、特定の AWS Glue 変換で使用します。

注記

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

遅延通知のしきい値 (分)

遅延通知を送信するまでのしきい値 (分単位) を設定します。RUNNINGSTARTING、または STOPPING ジョブの実行が想定時間 (分単位) を超えると通知を送信するように、このしきい値を設定できます。

セキュリティ設定

リストからセキュリティ設定を選択します。セキュリティ設定では、Amazon S3 ターゲットのデータの暗号化方法として、暗号化なし、AWS KMS で管理されたキー (SSE-KMS) を使用したサーバー側の暗号化、または Amazon S3 で管理された暗号化キー (SSE-S3) を使用したサーバー側の暗号化を指定します。

サーバー側の暗号化

このオプションを選択すると、ETL ジョブが Amazon S3 に書き込むときに、データは SSE-S3 暗号化を使用して保管時に暗号化されます。Amazon S3 のデータターゲットと、Amazon S3 の一時ディレクトリに書き込まれるデータは、両方とも暗号化されています。このオプションはジョブパラメータとして渡されます。詳細については、Amazon Simple Storage Service ユーザーガイドの「Amazon S3 が管理する暗号化キーによるサーバー側の暗号化 (SSE-S3) を使用したデータの保護」を参照してください。

重要

セキュリティ設定を指定している場合、このオプションは無視されます。

Glue データカタログを Hive メタストアとして使用する

AWS Glue データカタログを Hive メタストアとして使用することを選択します。ジョブに使用される IAM ロールには、glue:CreateDatabase アクセス許可が必要です。「default」という名前のデータベースが存在しない場合はデータカタログに作成されます。

接続

VPC 設定を選択し、仮想プライベートクラウド (VPC) にある Amazon S3 データソースにアクセスします。AWS Glue でネットワーク接続を作成および管理できます。詳細については、「データへの接続」を参照してください。

[Libraries] (ライブラリ)
Python ライブラリパス、依存 JAR パス、参照されるファイルパス

これらのオプションはスクリプトで必要に応じて指定します。ジョブを定義するときに、これらのオプションのカンマ区切りの Amazon S3 パスを定義できます。ジョブ実行時にこれらのパスを上書きできます。詳細については、「独自のカスタムスクリプトの提供」を参照してください。

ジョブのパラメータ

スクリプトに名前付きパラメータとして渡される一連のキーと値のペア。これらは、スクリプトの実行時に使用されるデフォルト値ですが、トリガーまたはジョブの実行時に上書きできます。キー名の前に -- を付ける必要があります (--myKey など)。AWS Command Line Interface を使用するときに、ジョブパラメータをマッピングとして渡します。

例については、「AWS Glue の Python パラメータの受け渡しとアクセス」で Python パラメータを参照してください。

タグ

[タグキー] とオプションの [タグ値] を使用してジョブにタグを付けます。作成されたタグキーは読み取り専用になります。リソースを整理、識別しやすいように、いくつかのリソースでタグを使用します。詳細については、「AWSAWS Glue のタグ」を参照してください。

Lake Formation 管理対象テーブルにアクセスするジョブの制約事項

AWS Lake Formation で管理されるテーブルに対して読み書きするジョブを作成する場合は、次の注意事項と制約事項に注意してください。