AWS Glue で構築する ETL パイプライン - クローラーとジョブの設計
クローラーでスキーマを自動検出し、Glue ジョブで ETL 処理を実行する。データカタログの活用パターンと Glue Studio によるビジュアル開発を紹介します。
クローラーとデータカタログ
Glue クローラーは S3、RDS、Redshift、DynamoDB など 30 以上のデータソースを自動スキャンし、スキーマ (テーブル定義、カラム名、データ型) を検出してデータカタログに登録します。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 Studio
Glue Data Quality はデータ品質ルール (DQDL) を定義し、 ETL パイプライン内でデータの検証を自動実行します。完全性 (NULL 値の割合)、一意性 (重複チェック)、参照整合性 (外部キーの存在確認) などのルールを宣言的に記述し、品質スコアが閾値を下回った場合にジョブを停止またはアラートを発行します。 Glue Studio はビジュアル ETL エディターで、ドラッグ&ドロップでソース、変換、ターゲットを接続し、コーディングなしで ETL ジョブを構築できます。ノートブック環境で PySpark コードを対話的にテストし、本番ジョブに変換するワークフローも提供します。 Glue のバージョニングでジョブスクリプトの変更履歴を管理し、問題発生時にロールバックできます。 ETL の分析手法を深く理解するには、専門書籍 (Amazon)が役立ちます。
Glue のコスト最適化
Glue ジョブの料金は DPU (Data Processing Unit) 時間で課金され、1 DPU は 4 vCPU と 16 GB メモリに相当します。Glue 4.0 は Auto Scaling でジョブの負荷に応じて DPU 数を自動調整し、過剰なリソース割り当てを防止します。Flex 実行クラスは非緊急のバッチジョブ向けで、標準実行より約 35% 安価です。クローラーの実行頻度をデータ更新頻度に合わせて最適化し、不要なスキャンを避けます。ジョブブックマークで前回処理済みのデータをスキップし、増分処理でコストと処理時間を削減します。CloudWatch メトリクスで DPU 使用率を監視し、常に低い使用率のジョブは DPU 数を削減します。
まとめ
Glue はクローラーによるスキーマ自動検出、サーバーレスの Spark ベース ETL ジョブ、Hive 互換のデータカタログを統合的に提供します。Data Quality でデータ品質ルールを自動検証し、Glue Studio のビジュアルエディターでコーディングなしに ETL ジョブを構築できます。ジョブブックマークで増分処理を実現し、Flex 実行クラスで非緊急ジョブのコストを約 35% 削減します。