ETLジョブを効率化するAWS Glue
AWS Glueとは
AWS Glueはフルマネージド型のデータ抽出、変換、ロード(ETL)サービスです。簡単に素早く、ETLジョブの作成と実行ができる上に、サーバーレスなので、インフラストラクチャをセットアップして管理する必要がありません。
AWS Glueのメリット
手間がかからない
AWS Glueは次のように、幅広いAWSのサービスに統合されているため、オンボーディング時の手間がかかりません。
- Amazon Auroraとその他のAmazon RDSエンジン
- Amazon Redshift
- Amazon S3に保存されたデータ
- Amazon EC2で実行されるAmazon VPC内の一般的なデータベースエンジンとデータベース
優れたコスト効率性
AWS Glueはサーバーレスです。AWS Glue側でETLジョブの実行に必要なリソースのプロビジョニング、設定、スケーリングが処理され、フルマネージド型のApache Sparkスケールアウト環境で実行できるようになります。料金は、ジョブの実行中に使用されたリソースに対してのみ発生します。
優れた機能
ETLジョブの構築、維持、実行における作業のほとんどを自動化できます。AWS Glueはデータソースをクロールし、データフォーマットを識別して、スキーマと変換を提案します。AWS Glueは、データの変換とロードプロセスを実行するコードを自動的に生成します。
AWS Glueの特徴
AWS Glueは、AWS Glueデータカタログと呼ばれる中央メタデータリポジトリ、Apache Spark向けに記述されたPythonまたはScalaコードを自動的に生成するETLエンジン、依存性の解決、ジョブのモニタリング、再試行を処理する柔軟なスケジューラで構成されています。
統合されたデータカタログ
AWS Glueデータカタログは、保存される場所に関わらず、すべてのデータセットに使用できます。AWS Glueデータカタログとは、AWS Glue環境を管理するためのテーブル定義、ジョブ定義、およびその他の制御を含む、AWSの持続的なメタデータストアです。
(機能)
- 統計情報の計算とパーティションの登録は自動的に実行され、データのクエリを効率的かつ費用対効果の高い方法で行うことができます。
- 包括的なスキーマバージョン履歴が保存されるため、時間の経過とともにデータの変化経過を把握することができます。
スキーマの自動検出
クローラーがソースやターゲットのデータストアに接続され、分類子の優先順位付きリストによってデータスキーマが判定された後、AWS Glueデータカタログにメタデータが作成されます。
(機能)
- クローラーはスケジュールやオンデマンドで実行することができます。
- 最新のメタデータが必要なイベント時にトリガーすることができます。
コードの生成
データの抽出、変換、ロードのためのコードが自動的に生成されます。AWS Glueでデータのソースとターゲットを指定するだけで、データの変換、フラット化、エンリッチを行うETLスクリプトが作成されます。
データを消去して重複を排除する
AWS Glueは、重複排除のためのAWS Lake FormationのFindMatchesという機械学習の変換を提供しています。これに関して、機械学習の知識は必要ありません。
(機能)
- レコードのセットに「一致する」または「一致しない」のいずれかのラベルを付けていくことで、FindMatchesが1組のレコードを「一致」とみなす条件を学習していきます。これにより、FindMatchesは一致するレコードを検索することで、データを消去して分析用に準備することができます。
開発者のエンドポイント
ETLコードを対話的に開発する場合は、生成されるコードの編集、デバッグ、テストを行うために、AWS Glueによって開発のエンドポイントが用意されます。
(機能)
- お好みのIDEやメモ帳を使用できます。
- カスタムのリーダー、ライター、変換を作成し、カスタムライブラリとしてAWS Glue ETLジョブにインポートできます。
- AWSのGitHubリポジトリでは、他の開発者のコードを使用することや、他の開発者のコードを共有することができます。
柔軟なジョブスケジューラ
AWS Glueのジョブは、スケジュールベース、オンデマンド、イベントベースで呼び出すことができます。複数のジョブを並列で開始することも、ジョブ間の依存関係を指定して複雑なETLパイプラインを構築することもできます。
(機能)
- ジョブ間の依存関係すべての処理、不良データのフィルタリング、失敗したジョブの再試行は自動的に行われます。
- ログや通知はすべてAmazon CloudWatchにプッシュされるため、中央のサービスからモニタリングして、アラートを受信できます。
AWS Glueの料金
リソースの管理や初期費用は不要で、スタートアップ時間やシャットダウン時間も課金対象ではありませんが、以下に対して時間当たり、または月額で料金が発生します。
1. 時間当たり(秒単位)の課金対象
ETLジョブの実行に費やした時間
これは、ETLジョブの実行に使用したDPU(Data Processing Unit)の数に基づいて時間当たりの課金が発生します。1個のDPUには、4つのvCPUと16GBのメモリが提供されています。
2. 開発エンドポイント
ETLコードをインタラクティブに開発することを選択した場合のみ課金が適用されます。こちらは、開発エンドポイントのプロビジョニングに使用されたデータ処理ユニットの時間に基づいて課金されます。AWS Glueの開発エンドポイントには最低で2個のDPUが必要です。
いずれの課金対象も、東京リージョンでは、DPU時間あたり0.44USDドルが1秒単位で課金され、ジョブや開発エンドポイントごとに10分の最小期間が設定されています。
月額料金
AWS Glueデータカタログのみを使用する場合は、次の2つに対してのみ月額で料金がかかります。
- メタデータの保存
- アクセス
ただし、最初の100万個のオブジェクトの保存と最初の100万回のアクセスは無料です。
AWS Glueの用途の例
データウェアハウスまたはデータレイクでのストレージ用にデータを整理、最適化、検証フォーマットする
データウェアハウスまたはデータレイクの構築の際、多くのタスクが簡素化されます。
1. 半構造化データの処理
データストアに関するメタデータを検出および分類し、一元的なカタログに保存します。
2. ETLジョブの認証処理
スケジュールされたクローラプログラムからのテーブル定義でAWS Glueデータカタログが入力されます。クローラが分類子ロジックを呼び出して、データのスキーマ、形式、データ型を推論します。
分類子は、データのスキーマの決定に利用され、CSVやJSON、AVRO、XMLなどのファイルタイプで提供されています。grokパターンの使用やXMLドキュメント内の行タグを指定することで、独自の分類子を記述することができます。
3. データへの処理
ETLスクリプトを生成し、ソースからターゲットへデータを変換、フラット化、強化を行います。
4. スキーマへの処理
スキーマの変更を検出し、設定に基づき調整します。
5. データストレージのアクティビティの監視
ランタイムメトリクスを収集し、データウェアハウスまたはデータレイクのアクティビティを監視します。
上記の他に、「エラーと再試行を自動的に処理」、「必要に応じてリソースをスケーリング」といったタスクの簡素化も可能です。
サーバーレスクエリをAmazon S3データレイクに対して実行する
AWS Glueでは、複数のデータサイロにロードすることなく、1つの統一されたインターフェイスを通じてデータにアクセスし分析できます。これは、Amazon AthenaおよびAmazon Redshift SpectrumがAWS Glueデータカタログを使用してAmazon S3データレイクを直接クエリできるためです。
イベント駆動型のETLパイプラインを作成する
AWS Glue ETLジョブをAWS Lambda関数から呼び出すことで、Amazon S3で新しいデータが使用可能になるとすぐにETLジョブを実行できます。また、ETLジョブの処理の一環として、このような新しいデータセットをAWS Glueデータカタログに登録することができます。
データアセットを理解する
これは、AWS Glueとそれに関連する以下の機能によるためです。
- 様々なAWSサービスを使用してデータを保存できる
- AWS Glueデータカタログを使用してデータの統一されたビューを維持できる
- Data Catalogを表示して所有しているデータセットを素早く検索および検出できる
- 関連するメタデータを1つの中央リポジトリに維持できる
機能の3番目に含まれるData Catalogは、外部Apache Hiveメタストアのドロップインリプレースメントとしても機能します。
まとめ
本記事では、AWS Glueについてのメリットや特徴、料金、用途の例について解説しました。AWS Glueは、フルマネージド型のETLサービスでETLジョブの作業をほとんど自動化してくれます。また、多くのAWSサービスと統合されているため、手間のかからない便利なサービスです。