AWS Glue でジョブを追加する - AWS Glue

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 ジョブは、AWS Glue によって管理される Apache Spark 環境で実行されます。データはバッチで処理されます。

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

  • Python シェルジョブでは、Python スクリプトがシェルとして実行され、Python 2.7 と Python 3.6 の両方がサポートされます。このタイプのジョブでは、Apache Spark 環境を必要としないタスクをスケジュールして実行できます。

ジョブプロパティの定義

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

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

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

名前

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

IAM ロール

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

タイプ

実行するジョブ環境のタイプを指定します。

  • [Spark] を選択し、ジョブコマンド glueetl を使用して、Apache Spark ETL スクリプトを実行します。

  • [Spark Streaming] を選択し、ジョブコマンド gluestreaming を使用して、Apache Spark ストリーミング ETL スクリプトを実行します。詳細については、「AWS Glue でのストリーミング ETL ジョブの追加」を参照してください。

  • [Python シェル] を選択し、ジョブコマンド pythonshell を使用して、Python スクリプトを実行します。詳細については、「AWS Glue での Python シェルジョブの追加」を参照してください。

Glue バージョン

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

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

  • Python 2.7

1.0
  • Spark 2.4.3

  • Python 2.7

  • Python 3.6

Glue バージョンを指定せずに作成されたジョブは、デフォルトで Glue 0.9 に設定されます。

このジョブが実行するスクリプト (生成またはカスタムス)

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

Scala クラス名

スクリプトが Scala で記述されている場合は、クラス名を指定する必要があります。AWS Glue 生成スクリプトのデフォルトのクラス名は [GlueApp] です。

一時ディレクトリ

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

注記

ジョブのソースおよびターゲットが、コンソールの [詳細] タブに表示されません。ソースとターゲットの詳細を表示するには、スクリプトを確認します。

詳細プロパティ
ジョブのブックマーク

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

モニタリングオプション
ジョブメトリクス

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

連続ログ記録

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

Spark UI

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

タグ

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

セキュリティ設定、スクリプトライブラリ、ジョブパラメータ
セキュリティ設定

リストからセキュリティ設定を選択します。セキュリティ設定では、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) を使用したデータの保護」を参照してください。

重要

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

Python ライブラリパス、依存 jar パス、および参照ファイルパス

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

ワーカータイプ

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

  • Standard – このタイプを選択する場合は、[最大キャパシティー] の値も指定します。最大キャパシティーは、このジョブの実行時に割り当てることができる AWS Glue データ処理ユニット (DPU) の数です。DPU は処理能力を相対的に測定するもので、4 個の vCPU のコンピューティング性能と 16 GB のメモリで構成されています。Standard ワーカータイプには、50 GB のディスクと 2 個のエグゼキュターがあります。

  • G.1X – このタイプを選択する場合は、[ワーカー数] の値も指定します。各ワーカーは 1 DPU (4 vCPU、16 GB のメモリ、64 GB のディスク) にマッピングされており、ワーカーごとに 1 個のエグゼキュターがあります。メモリを大量に消費するジョブには、このワーカータイプをお勧めします。

  • G.2X – このタイプを選択する場合は、[ワーカー数] の値も指定します。各ワーカーは 2 DPU (8 vCPU、32 GB のメモリ、128 GB のディスク) にマッピングされており、ワーカーごとに 1 個のエグゼキュターがあります。メモリを大量に消費するジョブには、ML 変換を実行するこのワーカータイプをお勧めします。

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

コンソールを使用してジョブを設定し、[ワーカータイプ] に [標準] を指定する場合は、[最大キャパシティー] が設定され、[ワーカー数] は [最大キャパシティー] の値から 1 を引いた数になります。AWS Command Line Interface (AWS CLI) または AWS SDK を使用する場合は、[最大キャパシティー] パラメータを指定するか、[ワーカータイプ] と [ワーカー数] のいずれも指定することができます。詳細については、「ジョブ」を参照してください。

ワーカー数

G.1X および G.2X ワーカータイプの場合、ジョブの実行時に割り当てられるワーカーの数を指定する必要があります。

定義可能なワーカーの最大数は、299 (G.1X) および 149 (G.2X) です。

最大キャパシティ

標準ワーカータイプの場合、このジョブの実行時に割り当てることができる AWS Glue データ処理ユニット (DPU) の最大数を指定する必要があります。DPU は処理能力を相対的に測定するもので、4 個の vCPU のコンピューティング性能と 16 GB のメモリで構成されています。ETL ジョブの実行に使用された DPU の数に基づいて時間あたりの料金が請求されます。詳細については、「AWS Glue 料金表ページ」を参照してください。

2~100 の整数を選択します。デフォルトは 10 です。このジョブタイプには、小数の DPU 割り当てを指定できません。

最大同時実行数

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

ジョブのタイムアウト

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

遅延通知しきい値

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

再試行回数

失敗した場合に AWS Glue がジョブを自動的に再起動する回数を 0〜10 の間で指定します。

ジョブパラメータ

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

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

上書きできないジョブパラメータ

トリガーまたはジョブの実行時に上書きできない特殊なジョブパラメータのセット。これらのキーと値のペアはスクリプトに名前付きパラメータとして渡されます。これらの値はスクリプトの実行時に使用され、トリガーやジョブの実行時に上書きすることはできません。キー名の前に -- を付ける必要があります (--myKey など)。getResolvedOptions() は 1 つのマッピングでジョブパラメータと上書きできないジョブパラメータの両方を返します。詳細については、「getResolvedOptions を使用して、パラメータにアクセスする」を参照してください。

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

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

データソース

Data Catalog テーブルを選択します。

変換タイプ

次のいずれかを選択します。

スキーマを変更する

生成されたスクリプトに ApplyMapping 変換を追加します。ソースデータのスキーマを変更し、新しいターゲットデータセットを作成できます。

一致するレコードを検索する

ソースデータ内で一致するレコードを見つけるために使用する機械学習変換を選択できます。

ターゲット

以下のいずれかの操作を行います。

  • Amazon S3 パスまたは JDBC データストアを指定するには、[データターゲットでテーブルを作成する] を選択します。

  • カタログテーブルを指定するには、 データカタログのテーブルを使用し、データターゲットを更新する] を選択します。

Amazon S3 ターゲットの場所については、出力が書き込まれるディレクトリの場所を指定します。パスのターゲットパスディレクトリと同じ名前のファイルが存在していないことを確認します。JDBC ターゲットで、指定されたオブジェクトが存在しない場合は、AWS Glue によって必要に応じてスキーマオブジェクトが作成されます。

AWS Glue コンソールを使用してジョブを追加する方法の詳細については、AWS Glue コンソールでのジョブの使用 を参照してください。