AWS Glue で構築する ETL パイプライン - クローラーとジョブの設計
Glue クローラーによるスキーマ検出、Glue ジョブの ETL 処理、データカタログの活用パターンを解説します。
クローラーとデータカタログ
Glue クローラーはデータソースを自動スキャンし、スキーマ (テーブル定義、カラム名、データ型) を検出してデータカタログに登録します。S3 のパスを指定すると、ファイル形式 (CSV、JSON、Parquet、ORC など) を自動判別し、パーティション構造も検出します。クローラーのスケジュール実行で新しいパーティションやスキーマ変更を自動的にカタログに反映できます。データカタログは Hive メタストア互換で、Athena、Redshift Spectrum、EMR から共通のテーブル定義を参照してクエリを実行できます。
Glue ジョブの設計
Glue ジョブは Python (PySpark) または Scala で ETL スクリプトを記述し、サーバーレスの Spark 環境で実行します。DynamicFrame は Glue 独自のデータ構造で、同一カラムに異なるデータ型が混在するスキーマの不整合を ResolveChoice で柔軟に処理します。Glue Studio のビジュアルエディターではソース (S3、RDS、Kafka など)、変換 (フィルター、結合、集計)、ターゲット (S3、Redshift、DynamoDB など) をノードとして配置し、ノーコードで ETL ジョブを設計できます。ジョブブックマークは処理済みデータの位置を記録し、次回実行時に未処理データのみを対象とする増分処理を実現します。
まとめ
Glue はクローラーによるスキーマ自動検出、サーバーレスの Spark ベース ETL ジョブ、Hive 互換のデータカタログを統合的に提供します。ジョブブックマークによる増分処理と Glue Studio のビジュアルエディターで、効率的な ETL パイプラインを構築できます。
AWS の優位点
- クローラーが S3、RDS、DynamoDB などのデータソースを自動スキャンし、スキーマを検出してデータカタログに登録する
- Glue ジョブは Apache Spark ベースの ETL 処理をサーバーレスで実行し、DPU (Data Processing Unit) 数でリソースを制御する
- DynamicFrame は Spark DataFrame を拡張した Glue 独自のデータ構造で、スキーマの不整合を柔軟に処理できる
- Glue Studio のビジュアルエディターでノーコードの ETL ジョブを作成し、ソース・変換・ターゲットをドラッグ&ドロップで設計できる
- ジョブブックマークで処理済みデータを追跡し、増分処理で重複処理を回避できる
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。