AWS Glue

AWS のサーバーレス ETL サービスで、データの抽出・変換・ロードとデータカタログ管理を提供する

AWSデータ分析

AWS Glue とは

AWS Glue は、サーバーレスETL (Extract, Transform, Load) サービスで、データの抽出・変換・ロードとデータカタログの管理を提供する。インフラのプロビジョニングが不要で、ジョブの実行時間に対してのみ課金される。2017 年にリリースされ、AWS のデータ分析基盤の中核を担っている。

主要コンポーネント

主要コンポーネントを以下にまとめる。

コンポーネント役割
Data Catalogメタデータの一元管理。AthenaRedshift Spectrum、EMR が参照
クローラーS3、RDS、DynamoDB のデータを自動スキャンし、スキーマをカタログに登録
ETL ジョブPySpark または Python シェルで ETL 処理を記述・実行
Glue Studioビジュアルエディタで ETL ジョブをノーコードで構築
Data Qualityデータ品質ルールを定義し、自動検証

典型的なデータパイプライン

典型的なデータパイプラインを図で示す。

S3 (生データ: JSON, CSV)
  ↓ Glue クローラー (スキーマ自動検出)
Glue Data Catalog (メタデータ登録)
  ↓ Glue ETL ジョブ (Parquet 変換、クレンジング、パーティショニング)
S3 (加工済みデータ: Parquet, パーティション分割)
  ↓ Athena (SQL クエリ)
QuickSight (ダッシュボード)

Glue ETL ジョブの実装

Glue ETL ジョブの実装のコード例を示す。

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)

# Data Catalog からデータを読み込み
source = glueContext.create_dynamic_frame.from_catalog(
    database="raw_data",
    table_name="access_logs"
)

# 変換: 不要なカラムを削除、日付でパーティション分割
transformed = DropFields.apply(source, paths=["user_agent", "referer"])

# S3 に Parquet 形式で書き出し
glueContext.write_dynamic_frame.from_options(
    frame=transformed,
    connection_type="s3",
    connection_options={"path": "s3://processed-data/access_logs/"},
    format="parquet"
)

Step Functions + Lambda との使い分け

Step Functions + Lambda との使い分けを以下に整理する。

観点GlueStep Functions + Lambda
処理規模大規模 (GB〜TB)小〜中規模 (MB〜GB)
実行時間数分〜数時間最大 15 分 (Lambda)
言語PySpark, Python任意 (Node.js, Python 等)
コストDPU 時間課金 ($0.44/DPU-hour)Lambda 実行時間課金 (安め)
起動時間数分 (Spark クラスター起動)ミリ秒〜秒
適するケース大量データの変換、複雑な結合軽量な ETL、API 連携

小規模なデータ変換 (数百 MB 以下) には Lambda の方がコスト効率が良い。Glue は Spark クラスターの起動に数分かかるため、頻繁に実行する小さなジョブには不向きだ。

Data Catalog の価値

Glue Data Catalog は単なるメタデータストアではなく、AWS のデータ分析サービス群の共通カタログとして機能する。

  • Athena: Data Catalog のテーブル定義を使って S3 上のデータに SQL クエリを実行
  • Redshift Spectrum: 外部テーブルとして Data Catalog を参照
  • EMR: Hive メタストアの代替として Data Catalog を使用

一度カタログに登録すれば、複数のサービスからスキーマ定義を共有できる。

コスト最適化

  • クローラーの実行頻度を最小限にする (スケジュールではなくイベント駆動)
  • ジョブのワーカー数 (DPU) を適切に設定する (デフォルトの 10 DPU は多すぎることが多い)
  • 小規模データには Glue ではなく Lambda を使う

体系的に学ぶなら関連書籍を参照してほしい。

この記事は役に立ちましたか?

関連用語

関連する記事