0Pricing
Cloud & IT Cert Prep · レッスン

AWS Glue:ETLとデータカタログ

AWS GlueでサーバーレスETLジョブを実行し、Glue Data Catalogにテーブルスキーマを登録して、新しいデータを自動的にクロールします。

「AWS Glue:ETLとデータカタログ」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。

AWS Glue とは

AWS Glue は、フルマネージド型のサーバーレス ETL(Extract、Transform、Load)サービスです。サーバーをプロビジョニングまたは管理する必要はなく、ジョブの実行時に Glue が Spark または Python のワーカーを自動的に割り当てます。Glue は主に 2 つのコンポーネントで構成されます。データ変換ジョブ用のETL エンジンと、データソースおよびターゲットに関するメタデータを保存するData Catalogueです。

Glue Data Catalogue の概要

Glue Data Catalogue は、Apache Hive Metastore と互換性のある集中型メタデータリポジトリです。データベース、テーブル、列定義、データ型、パーティション情報を保存します。Athena、Redshift Spectrum、EMR などのサービスが同じ Data Catalogue を使用するため、S3 にどのようなデータが存在し、どこに保存されているかを示す信頼できる単一の情報源になります。

# List databases in the Glue Data Catalogue
aws glue get-databases --query 'DatabaseList[*].Name'

# List tables in a database
aws glue get-tables --database-name my_db --query 'TableList[*].Name'

Glue クローラー:スキーマの自動検出

Glue Crawler はデータストア(S3、JDBC、DynamoDB)に接続し、データをサンプリングして、スキーマとパーティション構造を自動的に推測します。その後、Data Catalogue のテーブル定義を作成または更新します。クローラーはスケジュール実行することも、オンデマンドで起動することもできます。増分クロールにも対応しているため、後続の実行では新しいパーティションだけを処理できます。

# Create and start a Glue Crawler via CLI
aws glue create-crawler \
  --name sales-crawler \
  --role arn:aws:iam::123456789012:role/GlueRole \
  --database-name my_db \
  --targets '{"S3Targets": [{"Path": "s3://my-data-lake-123/landing/sales/"}]}'

aws glue start-crawler --name sales-crawler

Glue ETL ジョブの作成

Glue ETL ジョブは、ソースからデータを読み取り、DynamicFrame API を使用して変換を適用し、ターゲットへ書き込む PySpark または Scala Spark のスクリプトです。DynamicFrame はスキーマの柔軟性を備えた Spark DataFrame の拡張であり、一貫性のないデータ型やネストされた JSON を自動的に処理できます。Glue Studio のビジュアルエディターから、定型的なジョブスクリプトを生成できます。

# Minimal Glue PySpark ETL job
from awsglue.context import GlueContext
from awsglue.transforms import *
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)

# Read from Data Catalogue table
source = glueContext.create_dynamic_frame.from_catalog(
    database='my_db', table_name='raw_sales')

# Drop null order_id rows
cleaned = Filter.apply(frame=source, f=lambda r: r['order_id'] is not None)

# Write Parquet to curated zone
glueContext.write_dynamic_frame.from_options(
    frame=cleaned,
    connection_type='s3',
    connection_options={'path': 's3://my-data-lake-123/curated/sales/'},
    format='parquet')

Glue ジョブのワーカーと DPU

Glue は Data Processing Units (DPUs) 単位でキャパシティを割り当てます。1 DPU は 4 vCPU と 16 GB のメモリに相当します。ワーカータイプ(G.1X、G.2X、または flex/Spark Streaming 用の G.025X)とワーカー数を選択します。小規模なジョブでは、単一の DPU の 4 分の 1 を使用する G.025X の Python Shell ジョブタイプを使うと、単純な変換を非常に低コストで実行できます。

# Create a Glue job with G.1X workers
aws glue create-job \
  --name clean-sales \
  --role arn:aws:iam::123456789012:role/GlueRole \
  --command '{"Name": "glueetl", "ScriptLocation": "s3://scripts/clean_sales.py", "PythonVersion": "3"}' \
  --worker-type G.1X \
  --number-of-workers 5 \
  --glue-version '4.0'

Glue ワークフローとトリガー

Glue Workflow は、クローラーとジョブを依存関係グラフとして連結します。クローラーが新しいデータを検出し、完了時にジョブを起動し、そのジョブがさらに別のジョブを起動するといった流れです。Triggers には、スケジュール型(cron)、イベントベース型(オンデマンド)、条件型(ジョブの成功または失敗時に起動)があります。ワークフローを使えば、別のオーケストレーションサービスなしで ETL パイプラインのビジュアル DAG を利用できます。

# Create a schedule trigger that starts a job every night at 2 AM UTC
aws glue create-trigger \
  --name nightly-clean \
  --type SCHEDULED \
  --schedule 'cron(0 2 * * ? *)' \
  --actions '[{"JobName": "clean-sales"}]' \
  --start-on-creation

Glue Studio:ビジュアル ETL ビルダー

Glue Studio は、PySpark コードを手作業で記述せずに、ETL ジョブをグラフィカルに設計できるドラッグアンドドロップインターフェイスを提供します。ソースノード(S3、Catalogue テーブル、JDBC)を、変換ノード(フィルター、結合、集計、カスタム Python)を介してターゲットノードに接続します。Glue Studio は Spark スクリプトを自動的に生成します。また、実行ステータスやデータ品質メトリクスを監視するジョブ実行ダッシュボードも提供します。

Glue Data Quality

AWS Glue Data Quality(DQDL — Data Quality Definition Language)を使用すると、ETL ジョブの処理中にデータを検証するルールを記述できます。ルールでは、NULL の割合、値の範囲、参照整合性、一意性などをチェックできます。データが品質ルールに違反した場合、Glue はジョブを停止したり、不正なレコードを S3 の隔離パスへ送って手動レビューに回したりできます。これにより、破損したデータが気付かれないまま Curated Zone に渡されるのを防げます。

# DQDL rule example for Glue Data Quality
# Reject rows where order_total is negative or null
Rules = [
  IsComplete 'order_total',
  ColumnValues 'order_total' >= 0
]

Glue とその他の ETL オプションの比較

SAA-C03 試験では、Glue と代替サービスをいつ推奨すべきかを理解しておく必要があります。サーバーレス Spark ETL と Data Catalogue の統合には Glue を使用します。古いデータ移動タスク(主にレガシー)のオーケストレーションには AWS Data Pipeline を使用します。カスタムの Hadoop/Spark クラスター構成や長時間実行するワークロードが必要な場合は Amazon EMR を使用します。小さなペイロードに対する軽量なイベント駆動型マイクロ変換には Lambda を使用します。

JDBC と S3 以外のデータソース

Glue は JDBC connections を使用して、RDS、Aurora、Redshift、または Glue VPC Connection 経由のオンプレミスデータベースなど、リレーショナルデータベースに接続できます。接続には、JDBC URL、Secrets Manager の認証情報、VPC セキュリティグループを定義します。その後 Glue は、VPC サブネット内に配置された専用のネットワークインターフェイスを使用して、パブリックインターネットを経由せずにプライベートなデータベースエンドポイントへ接続します。

# Create a Glue JDBC connection to RDS Aurora
aws glue create-connection \
  --connection-input '{
    "Name": "aurora-prod",
    "ConnectionType": "JDBC",
    "ConnectionProperties": {
      "JDBC_CONNECTION_URL": "jdbc:mysql://aurora-cluster.cluster-xyz.us-east-1.rds.amazonaws.com:3306/sales",
      "SECRET_ID": "arn:aws:secretsmanager:us-east-1:123:secret:rds-creds"
    },
    "PhysicalConnectionRequirements": {
      "SubnetId": "subnet-abc123",
      "SecurityGroupIdList": ["sg-xyz456"],
      "AvailabilityZone": "us-east-1a"
    }
  }'

ブックマーク:増分処理

デフォルトでは、Glue ジョブは実行のたびにすべてのレコードを再処理します。Glue Job Bookmarks は処理済みの入力ファイルを追跡するため、後続の実行では新しいデータだけを取得できます。ブックマークは、同じプレフィックスに毎日新しいファイルが追加される追記専用の S3 ソースで不可欠です。ジョブパラメータで --job-bookmark-option job-bookmark-enable を指定してブックマークを有効にします。

# Start Glue job with bookmark enabled
aws glue start-job-run \
  --job-name clean-sales \
  --arguments '{"--job-bookmark-option": "job-bookmark-enable"}'

クイックチェック

このレッスンで学んだ AWS Solutions Architect(SAA-C03)の概念について理解度を確認します。

レッスンのまとめ

このレッスンでは、AWS Glue が PySpark と DynamicFrame API によるサーバーレス ETL を提供すること、Glue クローラーがスキーマを自動検出して Data Catalogue に登録すること、そしてGlue ブックマークによって新しい S3 データを増分処理できることを学びました。次は、S3 に対して直接サーバーレス SQL クエリを実行できる Amazon Athena について学びます。

よくある質問

「AWS Glue:ETLとデータカタログ」レッスンは無料ですか?

はい。「AWS Glue:ETLとデータカタログ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。

「AWS Glue:ETLとデータカタログ」で何を学びますか?

AWS GlueでサーバーレスETLジョブを実行し、Glue Data Catalogにテーブルスキーマを登録して、新しいデータを自動的にクロールします。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cloud & IT Cert Prepを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「AWS Glue:ETLとデータカタログ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?

はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. S3でデータレイクを構築する
  2. AWS Glue:ETLとデータカタログ
  3. Amazon Athena:S3上のサーバーレスSQL
  4. Kinesis Streams、Firehose、リアルタイム分析
← Cloud & IT Cert Prepに戻る