AWS Glue のアイコン

AWS Glue

データの抽出・変換・ロードを自動化するサーバーレス ETL サービス

何ができるか

AWS Glue は、さまざまなデータソースからデータを抽出し、分析に適した形式に変換して、データウェアハウスやデータレイクにロードする一連の処理 (ETL) を自動化するサーバーレスサービスです。サーバーの構築や管理が不要で、データカタログ機能によりデータの所在やスキーマ (構造) を自動的に検出・管理できます。Apache Spark ベースの処理エンジンを内蔵しており、大規模データの変換処理を並列で高速に実行します。

どのような場面で使うか

S3 に蓄積された生データの形式変換とデータレイクへの統合、複数のデータベースやアプリケーションからのデータ統合パイプラインの構築、Redshift や Athena で分析する前のデータクレンジングと正規化、ログデータの Parquet 形式への変換によるクエリコスト最適化など、データの前処理と統合が必要な場面で幅広く利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

食品加工工場に例えるとわかりやすいでしょう。農家 (データソース) から届く野菜や果物 (生データ) は、形も大きさもバラバラです。加工工場 (Glue) では、洗浄・カット・パッケージングを自動で行い、スーパーの棚 (データウェアハウス) にきれいに並べられる状態にします。工場の設備は使った時間だけ料金がかかり、稼働していないときの維持費はゼロです。

Glue とは

AWS Glue は、2017 年に登場したサーバーレスのデータ統合サービスです。ETL とは Extract (抽出)・Transform (変換)・Load (ロード) の略で、異なるシステムに散在するデータを収集し、分析しやすい形に整えて格納する処理を指します。従来の ETL ツールではサーバーの構築・運用やジョブスケジューリングの設定に多大な労力が必要でしたが、Glue はこれらをすべて AWS が管理するため、開発者はデータ変換のロジックに集中できます。

データカタログ

Glue の中核機能の一つがデータカタログです。クローラーと呼ばれる機能が S3、RDS、Redshift などのデータソースを自動的にスキャンし、テーブル定義やスキーマ情報をカタログに登録します。このカタログは Athena、Redshift Spectrum、EMR など他の AWS 分析サービスからも参照でき、データの所在と構造を一元管理するメタデータストアとして機能します。データの追加や変更があれば、クローラーが差分を検出してカタログを自動更新します。

ETL ジョブの仕組み

Glue の ETL ジョブは Apache Spark をベースとした分散処理エンジンで動作します。Python (PySpark) または Scala でジョブスクリプトを記述でき、Glue Studio のビジュアルエディタを使えばコードを書かずにドラッグ & ドロップで ETL パイプラインを構築することも可能です。ジョブ実行時には必要なコンピューティングリソースが自動的に割り当てられ、処理完了後に解放されます。料金は DPU (Data Processing Unit) の使用時間に基づく従量課金です。

ジョブスケジューリングとワークフロー

Glue にはジョブの実行スケジュールを管理するスケジューラーと、複数のジョブを連結するワークフロー機能が組み込まれています。cron 式でジョブの定期実行を設定したり、前段のジョブが成功した場合にのみ次のジョブを実行する依存関係を定義できます。トリガー機能を使えば、S3 へのファイル到着をきっかけに ETL ジョブを自動起動するイベント駆動型のパイプラインも構築できます。

はじめかた

Glue を使い始めるには、まず Glue コンソールでクローラーを作成し、S3 バケットなどのデータソースを指定して実行します。クローラーがデータを検出してカタログにテーブルを登録したら、Glue Studio でビジュアル ETL ジョブを作成します。ソース (入力)、変換 (フィルタリングやカラム変更)、ターゲット (出力先) をノードとして配置し、接続するだけで ETL パイプラインが完成します。テスト実行で結果を確認し、問題なければスケジュールを設定して定期実行に移行します。

Azure・オンプレミスとの比較

Azure の対応サービス Azure Data Factory
オンプレミスでの対応手段 Informatica PowerCenter, Talend, Apache NiFi

AWS の優位点

  • サーバーレスで ETL インフラの構築・運用が不要であり、DPU 使用時間に基づく従量課金のため、ジョブが実行されていない時間のコストがゼロになる
  • データカタログが Athena、Redshift Spectrum、EMR と統合されており、一度登録したメタデータを複数の分析サービスから横断的に参照できる
  • Glue Studio のビジュアルエディタにより、コードを書かずにドラッグ & ドロップで ETL パイプラインを構築でき、開発者以外のデータエンジニアも迅速にジョブを作成できる

注意点

  • DPU の使用時間に基づく従量課金のため、大量データの変換処理ではコストが増加する。開発・テスト時は小さなデータセットで検証すること
  • クローラーの実行頻度が高すぎるとコストが増加する。データ更新頻度に合わせて適切なスケジュールを設定すること
  • Glue Studio のビジュアルエディタはノーコードで ETL を構築できるが、複雑な変換ロジックが必要な場合は PySpark スクリプトの直接記述が適している

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。