AWS Glue Studio による ETL ジョブの管理 - AWS Glue

AWS Glue Studio による ETL ジョブの管理

AWS Glue Studio ではシンプルでグラフィカルなインタフェースを使用して、ETL ジョブを管理できます。ナビゲーションメニューで、[Jobs] (ジョブ) を選択し、[Jobs] (ジョブ) ページを表示します。このページには、AWS Glue Studio または AWS Glue コンソールで作成したすべてのジョブが表示されます。このページでは、ジョブを表示、管理、および実行できます。

ジョブの実行の開始

AWS Glue Studio ではオンデマンドでジョブを実行できます。ジョブは複数回実行でき、ジョブを実行するたびに、AWS Glue によりジョブのアクティビティとパフォーマンスに関する情報が収集されます。この情報は [job run] (ジョブの実行) として参照され、ジョブの実行 ID によって識別されます。

AWS Glue Studio では次の方法でジョブの実行を開始できます。

  • [Jobs] (ジョブ) ページで、開始するジョブを選択してから、[Run job] (ジョブの実行) ボタンをクリックします。

  • ビジュアルエディタでジョブを表示していて、そのジョブが保存されている場合は、[Run] (実行) ボタンをクリックして、ジョブの実行を開始します。

ジョブの実行についての詳細は、AWS Glue デベロッパーガイドの「Working with Jobs on the AWS Glue Console」を参照してください。

ジョブの実行のスケジュール

AWS Glue Studio ではスケジュールを作成し、特定の時間にジョブを実行できます。ジョブが実行される回数、曜日、時間などの制約を指定できます。これらの制約は cron に基づいており、cron と同じ制限があります。例えば、毎月 31 日にジョブを実行することを選択した場合、31 日がない月があることに注意してください。cron の詳細については、AWS Glue デベロッパーガイドの「cron 式」を参照してください。

スケジュールに従ってジョブを実行するには
  1. 次のいずれかの方法を使用して、ジョブのスケジュールを作成します。

    • [Jobs] (ジョブ) ページで、スケジュールを作成するジョブを選択し、[Actions] (アクション) を選択してから、[Schedule job] (ジョブのスケジュール) を設定します。

    • ビジュアルエディタでジョブを表示していて、そのジョブが保存されている場合は、[Schedules] (スケジュール) タブを選択します。次に [Create Schedule] (スケジュールの作成) を選択します。

  2. [Schedule job run] (ジョブの実行のスケジュール) ページで、次の情報を入力します。

    • Name (名前): ジョブのスケジュールの名前を入力します。

    • Frequency (頻度): ジョブのスケジュールの頻度を入力します。以下のオプションを選択できます。

      • Hourly (毎時): ジョブは 1 時間ごとに実行され、特定の時間に始まります。ジョブを実行する時間のを指定できます。デフォルトでは、[hourly] (毎時) を選択すると、ジョブは時間の初め (0 分) に実行されます。

      • Daily (毎日): ジョブは毎日実行され、一度に開始します。ジョブを実行する時間のとジョブの開始時間を指定できます。時間は 23 時間制で指定され、午後の時間には 13 から 23 の数字を使用します。分と時間のデフォルトの値は 0 です。つまり、[Daily] (毎日) を選択している場合、ジョブはデフォルトで午前 0 時に実行されます。

      • Weekly (毎週): ジョブは毎週 1 日以上実行されます。前述の [Daily] (毎日) と同じ設定に加えて、ジョブを実行する曜日を選択できます。1 日以上選択できます。

      • Monthly (毎月): ジョブは毎月、特定の日に実行されます。前述の [Daily] (毎日) と同じ設定に加えて、その月のジョブを実行する日を選択できます。その日を 1 から 31 の数値で指定します。2 月 30 などの、1 か月で存在しない日を選択した場合、その月にジョブは実行されません。

      • Custom (カスタム): cron 構文を使用して、ジョブのスケジュールの式を入力します。cron 式を使用すると、その月の特定の日ではなく最終日、または 3 か月ごとに 7 と 21 などのより複雑なスケジュールを作成できます。

        AWS Glue デベロッパーガイドの「cron 式」を参照してください。

    • Description (説明): オプションで、ジョブのスケジュールについての説明を入力できます。複数のジョブに同じスケジュールを使用する場合、説明があることでジョブのスケジュールがどうなっているのかを簡単に確認できます。

  3. [Create schedule] (スケジュールの作成) をクリックして、ジョブのスケジュールを保存します。

  4. スケジュールを作成すると、コンソールページの上部に成功のメッセージが表示されます。このバナーの [Job details] (ジョブの詳細) をクリックして、ジョブの詳細を表示できます。これにより、[Schedules] (スケジュール) タブが選択されているビジュアルジョブエディタのページが開きます。

ジョブスケジュールの管理

ジョブのスケジュールを作成したら、ビジュアルエディタでジョブを開き、[Schedules] (スケジュール) タブをクリックして、スケジュールを管理できます。

[Schedules] (スケジュール) タブでは、次のタスクを実行できます。

  • 新しいスケジュールの作成。

    [Create Schedule] (スケジュールの作成) を選択し、ジョブの実行のスケジュール に示されているようにスケジュールの情報を入力します。

  • 既存のスケジュールの編集。

    編集するスケジュールを選択して、[Action] (アクション)、[Edit schedule] (スケジュールの編集) を選択します。既存のスケジュールの編集を選択すると、[Frequency] (頻度) は [Custom] (カスタム)、スケジュールは cron 式と表示されます。cron 式を変更するか、[Frequency] (頻度) ボタンを使用して新しいスケジュールを指定できます。変更が完了したら、[Update schedule] (スケジュールの更新) を選択します。

  • アクティブなスケジュールの一時停止。

    アクティブなスケジュールを選択して、[Action] (アクション)、[Pause schedule] (スケジュールの一時停止) を選択します。スケジュールは、すぐに非アクティブ化されます。更新されたジョブスケジュールのステータスを表示するには、[refresh (reload)] (更新 (再ロード)) ボタンをクリックします。

  • 一時停止したスケジュールの再開。

    非アクティブ化したスケジュールを選択して、[Action] (アクション)、[Resume schedule] (スケジュールの再開) を選択します。スケジュールはすぐにアクティブになります。更新されたジョブスケジュールのステータスを表示するには、[refresh (reload)] (更新 (再ロード)) ボタンをクリックします。

  • スケジュールの削除。

    削除するスケジュールを選択して、[Action] (アクション)、[Delete schedule] (スケジュールの削除) を選択します。スケジュールはすぐに削除されます。更新したジョブスケジュールのリストを表示するには、[refresh (reload)] (更新 (再ロード)) ボタンを選択します。スケジュールには、完全に削除されるまで [Deleting] (削除中) のステータスが表示されます。

ジョブの実行の停止

ジョブの実行が完了する前に、ジョブを停止できます。ジョブが正しく設定されていないことがわかっている場合、またはジョブの完了に時間がかかりすぎる場合は、このオプションを選択できます。

[Monitoring] (モニタリング) ページの [Job runs] (ジョブの実行) リストで停止するジョブを選択し、[Action] (アクション) を選択してから、[Stop run] (実行の停止) をクリックします。

ジョブの表示

すべてのジョブは、[Jobs] (ジョブ) ページで確認できます。このページにアクセスするには、ナビゲーションペインで [Jobs] (ジョブ) を選択します。

[Jobs] (ジョブ) ページでは、アカウントで作成されたすべてのジョブを確認できます。[Your jobs] (ジョブ) リストには、ジョブ名、タイプ、ジョブの前回の実行のステータス、およびジョブが作成されて最後に変更された日付が表示されます。ジョブの名前を選択して、そのジョブの詳細情報を表示できます。

また、モニタリングダッシュボードを使用して、すべてのジョブを表示することもできます。ダッシュボードにアクセスするには、ナビゲーションペインで、[Monitoring] (モニタリング) を選択します。

ジョブの表示のカスタマイズ

[Jobs] (ジョブ) ページの [Your jobs] (ジョブ) セクションで、ジョブの表示方法をカスタマイズできます。また、検索テキストフィールドにテキストを入力して、そのテキストを含む名前のジョブのみを表示することもできます。

[Your jobs] (ジョブ) セクションの設定アイコン ( A gear symbol ) を選択すると、AWS Glue Studio でテーブルに情報を表示する方法をカスタママイズできます。表示内のテキストの行を折り返したり、ページに表示されるジョブの数を変更したり、表示する列を指定できます。

最近のジョブの実行の情報を表示する

新しいデータをソースの場所に追加する際、ジョブは複数回実行されます。ジョブを実行するたびに、一意の ID が割り当てられ、それに関する情報が収集されます。この情報は、次の方法で表示できます。

  • [Runs] (実行) タブをクリックして、現在表示されているジョブの実行の情報を表示します。

    [Recent job runs] (最近のジョブの実行) ページの [Runs] (実行) タブ には、ジョブの実行ごとにカードがあります。[Runs] (実行) タブで表示される情報には、次の情報が含まれます。

    • ジョブの実行 ID

    • このジョブの実行の試行回数

    • ジョブの実行のステータス

    • ジョブの実行開始および終了時刻

    • ジョブの実行のランタイム

    • ジョブのログファイルへのリンク

    • ジョブのエラーログファイルへのリンク

    • 失敗したジョブに返されたエラー

  • ジョブ実行を選択すると、以下のようにジョブに関する追加情報を表示できます。

[詳細を表示] を選択すると、ジョブ実行の詳細ページに同じような情報が表示されます。あるいは、[モニタリング] ページからジョブ実行の詳細ページに移動することもできます。ナビゲーションペインで、[モニタリング] を選択します。[Job runs] (ジョブの実行) リストまで下にスクロールします。ジョブを選択し、[View run details] (実行の詳細を表示する) を選択します。内容は、ジョブの実行の詳細を表示する に記述されます。

このジョブのログについての詳細は、「ジョブの実行ログの表示」を参照してください。

ジョブスクリプトの表示

ジョブ内のすべてのノードの情報を入力した後、AWS Glue Studio により、スクリプトが生成されます。このスクリプトは、ジョブによるソースからのデータの読み取り、変換、ターゲットの場所への書き込みに使用されます。ジョブを保存すると、このスクリプトをいつでも表示できます。

ジョブ用に生成されたスクリプトを表示するには
  1. ナビゲーションペインで [Jobs] (ジョブ) を選択します。

  2. [Jobs] (ジョブ) ページの [Your Jobs] (ジョブ) リストで、レビューするジョブの名前を選択します。または、リストからジョブを選択し、[Actions] (アクション) メニューを選択して、[Edit job] (ジョブの編集) を選択することもできます。

  3. ビジュアルエディタで、ページ上部の [Script] (スクリプト) タブを選択して、ジョブスクリプトを表示します。

    ジョブスクリプトを編集する場合は、「AWS Glue プログラミングガイド」を参照してください。

ジョブのプロパティを変更する

ジョブで実行されるアクションは、ジョブ図のノードにより定義されますが、お客様がジョブに設定できるプロパティもいくつかあります。これらのプロパティでは、ジョブが実行される環境、使用するリソース、しきい値の設定、セキュリティ設定などを決定できます。

ジョブの実行環境をカスタマイズするには
  1. ナビゲーションペインで [Jobs] (ジョブ) を選択します。

  2. [Jobs] (ジョブ) ページの [Your Jobs] (ジョブ) リストで、レビューするジョブの名前を選択します。

  3. ビジュアルエディタのページで、ジョブ編集ペインの上部にある [Job details] (ジョブの詳細) タブを選択します。

  4. 必要に応じて、ジョブのプロパティを変更します。

    ジョブのプロパティの詳細については、AWS Glue デベロッパーガイドの「Defining Job Properties」を参照してください。

  5. 次のようなジョブのプロパティを指定する必要がある場合、[Advanced properties] (詳細プロパティ) セクションを展開します。

    • Script filename (スクリプトファイル名) – Amazon S3 でジョブスクリプトを保存するファイルの名前です。

    • Script path (スクリプトパス) – ジョブスクリプトが保存される Amazon S3 の場所です。

    • Job metrics (ジョブのメトリクス) – (Python シェルジョブでは使用不可) ジョブの実行時に Amazon CloudWatch メトリクスの作成をオンにします。

    • Continuous logging (継続的なログ記録) – (Python シェルジョブでは使用不可) CloudWatch への連続的なログ記録をオンにし、ジョブが完了する前にログを表示できるようにします。

    • Spark UI および Spark UI logs path (Spark UI ログパス) – (Python シェルジョブでは使用不可) このジョブをモニタリングするための Spark UI の使用をオンにし、Spark UI ログの場所を指定します。

    • Maximum concurrency (同時実行の最大数) – このジョブで許可される同時実行の最大数を設定します。

    • Temporary path (一時的なパス) – AWS Glue でジョブスクリプトが実行されるときに一時的な中間結果が書き込まれる Amazon S3 の作業ディレクトリの場所です。

    • Delay notification threshold (minutes) (遅延通知のしきい値 (分)) – ジョブの遅延のしきい値を指定します。ジョブがしきい値で指定された時間よりも長い時間実行された場合、AWS Glue によりジョブの遅延通知が CloudWatch に送信されます。

    • Security configuration (セキュリティ設定) および Server-side encryption (サーバー側の暗号化) – これらのフィールドを使用して、ジョブの暗号化オプションを選択します。

    • Use Glue Data Catalog as the Hive metastore (Glue Data Catalog を Hive メタストアとして使用する) – Apache Hive Metastore の代わりに AWS Glue Data Catalog を使用する場合、このオプションを選択します。

    • Additional network connection (追加のネットワーク接続) – VPC 内のデータソース向けに、タイプ Network の接続を指定して、ジョブが VPC 経由でデータにアクセスできるようにします。

    • Python library path (Python ライブラリパス)、Dependent jars path (依存 JARS パス) (Python シェルジョブでは使用不可)、Referenced files path (参照されるファイルパス) – これらのフィールドを使用して、スクリプトの実行時にジョブが使用する追加のファイルの場所を指定できます。

    • Job Parameters (ジョブパラメータ) – スクリプトに名前付きパラメータとして渡される一連のキーと値のペアを追加できます。AWS Glue API の Python 呼び出しでは、明示的に名前でパラメータを渡すことが最善です。ジョブスクリプトでのパラメータの使用の詳細については、AWS Glue デベロッパーガイドの「Passing and Accessing Python Parameters in AWS Glue」を参照してください。

    • Tags (タグ) – ジョブにタグを追加することで、ジョブの整理および識別が容易になります。

  6. ジョブのプロパティを変更した後、ジョブを保存します。

Spark のシャッフルファイルを Amazon S3 に保存する

一部の ETL ジョブでは、複数のパーティションから情報を読み込んで結合する必要があります。例えば、結合変換を使用する場合などです。この操作はシャッフリングと呼ばれます。シャッフル中、データはディスクに書き込まれ、ネットワーク経由で転送されます。AWS Glue バージョン 3.0 では、これらのファイルの保存場所として Amazon S3 を設定できます。AWS Glue では、Amazon S3 との間でシャッフルファイルの書き込みおよび読み込みを行うシャッフルマネージャーを利用できます。Amazon S3 からのシャッフルファイルの書き込みおよび読み込みは、ローカルディスク (または Amazon EC2 用に最適化された Amazon EBS) に比べて 5% ~ 20% 遅くなります。ただし、Amazon S3 には無制限のストレージ容量があるため、ジョブを実行する際に「No space left on device」エラーについて心配する必要はありません。

ファイルのシャッフルに Amazon S3 を使用するようにジョブを設定するには
  1. [Jobs] (ジョブ) ページの [Your Jobs] (ジョブ) リストで、変更するジョブの名前を選択します。

  2. ビジュアルエディタのページで、ジョブ編集ペインの上部にある [Job details] (ジョブの詳細) タブを選択します。

    [Job parameters] (ジョブパラメータ) セクションまで下にスクロールします。

  3. 次のキーと値のペアを指定します。

    • --write-shuffle-files-to-s3true

      これは、AWS Glue でシャッフルマネージャーを構成する主要なパラメータです。シャッフルデータの書き込みおよび読み取りには Amazon S3 バケットを使用します。デフォルトでは、このパラメータの値は false です。

    • (オプション) --write-shuffle-spills-to-s3true

      このパラメータを使用すると、流出ファイルを Amazon S3 バケットにオフロードできます。これにより、AWS Glue での Spark ジョブの耐障害性が強化されます。これは、大量のデータをディスクに退避させる大規模なワークロードにのみ必要です。デフォルトでは、このパラメータの値は false です。

    • (オプション) --conf spark.shuffle.glue.s3ShuffleBucketS3://<shuffle-bucket>

      このパラメータを使用すると、シャッフルファイルを書き込む際に使用する Amazon S3 バケットを指定できます。このパラメータを設定しない場合、その場所は一時パス (--TempDir) 用に指定された場所にある shuffle-data フォルダになります。

      注記

      シャッフルバケットの場所がジョブが実行されるのと同じ AWS リージョン にあることを確認します。

      また、ジョブの実行の終了後、ファイルはシャッフルサービスによりクリーンアップされないため、シャッフルバケットの場所で Amazon S3 ストレージライフサイクルポリシーを設定する必要があります。詳細については、Amazon S3 ユーザーガイドの「ストレージのライフサイクルの管理」をご参照ください。

ジョブの保存

ジョブが保存されるまで、[Save] (保存) ボタンの左側に、赤い [Job has not been saved] (ジョブは保存されていません) という吹き出しが表示されます。

[Save] (保存) ボタンの左側の、「ジョブは保存されていません」というラベルが付いた赤い楕円形です。
ジョブを保存するには
  1. [Visual] (ビジュアル) および [Job details] (ジョブの詳細) タブで、必要なすべての情報を入力します。

  2. [保存] ボタンを選択します。

    ジョブを保存すると、「保存されていません」という吹き出しが、ジョブが最後に保存された日時の表示に変わります。

ジョブを保存する前に AWS Glue Studio を終了した場合、次回の AWS Glue Studio の起動時に通知が表示されます。通知では、未保存のジョブがあり、それを復元するかどうかを尋ねられます。ジョブの復元を選択すると、そのジョブの編集を続行できます。

ジョブ保存時のエラーのトラブルシューティング

[Save] (保存) ボタンをクリックすると、ジョブに必要な情報が欠落している場合は、情報が欠落しているタブに赤い吹き出しが表示されます。吹き出しの数字は、欠落している検出されたフィールドの数を示します。

「無題のジョブ」という名前のジョブの、ビジュアルエディタペインのタブのスクリーンショット。[Visual] (ビジュアル) タブには 2 とラベル付けされた吹き出し、[Job details] (ジョブの詳細) タブには 1 とラベル付けされた吹き出しが表示されています。
  • ビジュアルエディタのノードが正しく設定されていない場合、[Visual] (ビジュアル) タブに赤い吹き出しが表示され、エラーのあるノードに警告記号 A red triangle with an exclamation point in the center が表示されます。

    1. ノードを選択します。ノードの詳細パネルで、不足または誤った情報があるタブに赤い吹き出しが表示されます。

    2. ノードの詳細パネルで赤い吹き出しが表示されるタブを選択し、ハイライトされている問題のフィールドを見つけます。フィールドの下のエラーメッセージには、問題に関する追加情報が表示されます。

      ジョブエディタの [Visual] (ビジュアル) タブのスクリーンショット。2 とラベル付けされた吹き出しが付いています。警告ラベルが付いたデータソースノードが選択されています。ノードの詳細パネルでは、[Data source properties] (データソースのプロパティ) タブに 2 というラベルの吹き出しがあり、これが選択されています。[Database] (データベース) と [Table] (テーブル) の 2 つのフィールドは赤で示され、その下に値が必須であることを示すメッセージが表示されます。
  • ジョブのプロパティに問題がある場合、[Job details] (ジョブの詳細) タブには、赤い吹き出しが表示されます。そのタブを選択し、ハイライトされている問題のフィールドを見つけます。フィールドの下のエラーメッセージにより、問題に関する追加情報が表示されます。

    ジョブエディタの [Job details] (ジョブの詳細) タブのスクリーンショット。このタブには、1 とラベル付けされた吹き出しが付いています。「IAM ロール」フィールドは赤で示され、その下に値が必要であることを示すメッセージが表示されます。

ジョブのクローンを作成する

[Clone job] (ジョブのクローン) アクションを使用して、既存のジョブを新しいジョブにコピーします。

既存のジョブをコピーして新しいジョブを作成するには
  1. [Jobs] (ジョブ) ページの [Your Jobs] (ジョブ) リストで、複製するジョブを選択します。

  2. [Actions] (アクション) メニューから、[Clone job] (ジョブのクローン) を選択します。

  3. 新しいジョブの名前を入力します。その後、ジョブを保存または編集できます。

ジョブの削除

不要になったジョブを削除できます。1 回の操作で 1 つ以上のジョブを削除できます。

AWS Glue Studio からジョブを削除する方法
  1. [Jobs] (ジョブ) ページの [Your Jobs] (ジョブ) リストで、削除するジョブを選択します。

  2. [Actions] (アクション) メニューから、[Delete job] (ジョブの削除) を選択します。

  3. delete」を入力して、ジョブを削除することを確認します。

ビジュアルエディタで、そのジョブの [Job details] (ジョブの詳細) タブを表示して、保存したジョブを削除することもできます。