AWS Glue
開発者ガイド

AWS Glue でジョブを追加する

AWS Glue でのジョブは、作業を実行するビジネスロジックで構成されます。通常、ジョブは、抽出、変換、およびロード (ETL) スクリプトを実行します。ジョブ実行をモニタリングして、成功、継続時間、開始時間などのランタイムメトリクスを理解できます。ジョブの出力は変換されたデータで、指定された場所に書き込まれます。

ジョブ実行は、起動時にジョブを開始するトリガーによって開始されます。ジョブには、ソースデータに接続し、スクリプトのロジックを使用してデータを処理し、データターゲットに書き出すスクリプトが含まれています。ジョブは、複数のデータソースおよび複数のデータターゲットを持つことができます。AWS Glue によって生成されたスクリプトを使用してデータを変換することも、独自のスクリプトを提供することもできます。AWS Glue コードジェネレーターでは、ソーススキーマとターゲット位置またはスキーマを指定すると、Apache Spark API (PySpark) スクリプトを自動的に作成できます。このスクリプトを出発点として使用し、目標に合わせて編集できます。

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

AWS Glue のジョブには 2 つのタイプがあります。SparkPython シェルです。

  • Apache Spark ETL ジョブは、AWS Glue の ETL 作業を実行するビジネスロジックで構成されます。ジョブ実行をモニタリングして、成功、継続時間、開始時間などのランタイムメトリクスを理解できます。ジョブの出力は変換されたデータで、指定された場所に書き込まれます。

  • Python シェルジョブでは、Python スクリプトも実行されます。Python シェルジョブを使用すると、Python 2.7 または Python 3.6 と互換性のあるスクリプトを実行することができます。これらのジョブを使用して、Spark ETL ジョブを必要としないタスクをスケジュールして実行できます。

ジョブプロパティの定義

AWS Glue コンソールでジョブを定義する場合は、AWS Glue ランタイム環境を制御するためにプロパティの値を指定します。次のリストでは、Spark ジョブのプロパティについて説明します。Python シェルジョブのプロパティについては、「Python シェルジョブのジョブプロパティの定義」を参照してください。

名前

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

IAM ロール

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

タイプ

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

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

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

Glue バージョン

Glue バージョンは、AWS Glue がサポートする Apache Spark と Python のバージョンを決定します。Python バージョンは、Spark タイプのジョブでサポートされるバージョンを示します。次の表に、AWS Glue 使用可能なバージョンと対応する 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 メトリクスの作成を有効または無効にします。プロファイリングデータを表示するには、このオプションを有効にする必要があります。メトリクスを有効にして視覚化する方法の詳細については、「ジョブの監視とデバッグ」を参照してください。

タグ

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

サーバー側の暗号化

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

重要

現時点では、セキュリティ設定は、ETL ジョブのパラメータとして渡されるサーバー側暗号化 (SSE-S3) 設定をすべてオーバーライドします。したがって、ジョブにセキュリティ設定と SSE-S3 の両方が関連付けられている場合、SSE-S3 パラメータは無視されます。

スクリプトライブラリ

スクリプトで必要な場合は、以下の場所を指定できます。

  • Python ライブラリパス

  • 依存 JARS パス

  • 参照されるファイルパス

ジョブを定義するときに、これらのライブラリのコンマで区切られた 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 を使用する場合は、[最大キャパシティー] パラメータを指定するか、[ワーカータイプ] と [ワーカー数] のいずれも指定することができます。詳細については、「ジョブ」を参照してください。

ワーカー数

ジョブの実行時に割り当てられた、定義済みの workerType ワーカー数。

[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 など) で、値は value-for-myKey です。

'--myKey' : 'value-for-myKey'

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

ソース

カタログテーブルを指定します。

ターゲット

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

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

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

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

注記

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

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

AWS Glue データカタログ を Spark Hive メタストアとして使用できるようにします。

Spark UI

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

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

このページの内容: