での Spark ジョブのジョブプロパティの設定 AWS Glue - AWS Glue

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

での Spark ジョブのジョブプロパティの設定 AWS Glue

AWS Glue ジョブには、ソースデータに接続して処理し、データターゲットに書き出すスクリプトがカプセル化されています。通常、ジョブは、抽出、変換、ロード (ETL) スクリプトを実行します。ジョブでは、汎用 Python スクリプト (Python シェルジョブ) を実行することもできます。AWS Glue トリガーでは、スケジュールまたはイベントに基づいて、またはオンデマンドでジョブを開始できます。ジョブ実行をモニタリングすると、完了ステータス、継続時間、開始時間などのランタイムメトリクスを知ることができます。

AWS Glue で生成されたスクリプトを使用することも、独自のスクリプトを使用することもできます。ソーススキーマとターゲットの場所またはスキーマを使用すると、AWS Glueコードジェネレーターは Apache Spark API (PySpark) スクリプトを自動的に作成できます。このスクリプトを出発点として使用し、目標に合わせて編集できます。

AWS Glue は、JSON、CSV、ORC (Optimized Row Columnar)、Apache Parquet、Apache Avro などのいくつかのデータ形式で出力ファイルを書き込むことができます。一部のデータ形式では、一般的な圧縮形式を記述できます。

AWS Glue のジョブには、Sparkストリーミング ETLPython シェルの 3 タイプがあります。

  • Spark ジョブは、 によって管理される Apache Spark 環境で実行されます AWS Glue。データはバッチで処理されます。

  • ストリーミング ETL ジョブは Spark ジョブに似ていますが、データストリームで ETL を実行する点が異なります。このタイプのジョブでは Apache Spark 構造化ストリーミングフレームワークが使用されます。一部の Spark ジョブ機能は、ストリーミング ETL ジョブでは使用できません。

  • Python シェルジョブは Python スクリプトをシェルとして実行し、使用している AWS Glue バージョンに応じた Python バージョンをサポートします。このタイプのジョブでは、Apache Spark 環境を必要としないタスクをスケジュールして実行できます。

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

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

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

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

名前

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

説明

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

IAM ロール

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

タイプ

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

ワーカータイプ

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

AWS Glue ワーカーで使用できるリソースは DPUs。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 リージョンで、AWS Glueバージョン 3.0 以降の Spark ETL ジョブでのみ使用できます。

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

  • 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 を使用する場合は、最大容量パラメータを指定するか、ワーカータイプワーカー数 の両方を指定できます。

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

[言語]

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

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

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

ジョブのブックマーク

ジョブ実行時に 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。