DEA / ドメイン1 データの取り込みと変換

重要な内容

AWS Glue の ETL ジョブ

は、サーバーを用意せずに (抽出・変換・ロード) のジョブを動かせるのデータ統合サービスです。 を中心に、複数のソースからデータを読み、結合・クレンジング・形式変換をして、やへ書き込みます。DEA では、ジョブの種類とワーカーの選択、コスト (Flex)、性能 ()、そして「Glue と と と のどれで変換するか」の判断が中心です。

Point
  • DPU = Data Processing Unit は Glue の処理能力と課金の単位で、1 DPU は 4 vCPU と 16 GB のメモリです。
  • DynamicFrame は Glue 独自のデータの表現で、レコードごとにスキーマが違ってもよい (自己記述的な) ことが Spark の DataFrame との違いです。
  • 和訳

概要

概要の図 S3 Glue ジョブSpark RDS・JDBC DynamoDB Glue Data Catalogテーブル定義 S3 Parquetパーティション Redshift Iceberg テーブル トリガー・ワークフロー・Step Functions・EventBridge

のジョブは、Data Catalog のテーブルや接続を使ってソースを読み、スクリプト (Python または Scala) の変換を実行し、ターゲットへ書きます。スクリプトは自分で書くことも、Glue Studio の画面でノードをつないで生成することもできます。

構成要素役割
ジョブスクリプト、 ロール、ワーカーの種類と数、Glue のバージョン、接続などの定義
Data Catalogテーブルのスキーマと場所 (詳細は「AWS Glue Data Catalog と」の章)
接続 や 内のデータストアへの接続情報
トリガー・ワークフロージョブとクローラーの起動と順序

主要技術

①ジョブの種類 ⚠️ 頻出

種類実行エンジン向くケース
(glueetl)分散処理の Apache Spark大量データの結合・集計・形式変換。最もよく使う
Spark Streaming (gluestreaming)Spark Structured Streaming (マイクロバッチ) や のストリームを読んで変換し続ける
Python shell (pythonshell)1台の Python (0.0625 または 1 DPU)小さなデータの処理、 の実行、 の呼び出しなど、分散処理が不要な軽い処理

for Ray (Ray による分散 Python) は、2026年4月30日に新規の受付を終えました。既存の利用者は使い続けられますが、新しく Ray で分散処理をする場合は、 上で KubeRay を使う方法が案内されています。試験で「分散 Python」の選択肢が出ても、新規の構成には選びません。

⚠️ 頻出: 数 MB〜数百 MB の小さなファイルを1つずつ処理するだけなら、Spark ジョブは起動と DPU の点で過剰です。Python shell ジョブか を選びます。


②ワーカーの種類と Glue のバージョン

ワーカーvCPU / メモリ向くケース
G.025X0.252 / 4 GB少量のストリーミングジョブ
G.1X14 / 16 GB一般的な変換・結合・クエリ
G.2X28 / 32 GB一般的な変換で、より大きなメモリが必要
G.4X / G.8X4 / 816 / 64 GB、32 / 128 GB重い変換・集計・結合
G.12X / G.16X12 / 1648 / 192 GB、64 / 256 GB非常に大きく資源を多く使うジョブ
R.1X〜R.8X1〜8メモリ重視の構成メモリ不足 (OOM) が頻発する、メモリと の比率を高くしたい

ジョブの料金は、使った DPU と実行時間で決まります。 のバージョンで と Python のバージョンが決まり、バージョンを指定しないジョブは 5.1 になります。ジョブのタイムアウトを指定しない場合の既定は、Glue 5.0 以降で 480 分、4.0 以前で 2,880 分です。


③Flex 実行とオートスケーリング (コストの調整) ⚠️ 頻出

機能内容向くケース
Flex 実行クラス空いている計算資源を使い、標準より安く実行する。開始が遅れることがある。G.1X と G.2X、 3.0 以降で使える急がないジョブ (夜間の集計、テスト、一回限りのロード)
標準実行クラス専用の資源ですぐに開始する時間に厳しいジョブ
オートスケーリング指定したワーカー数を上限に、各段階で必要な数だけワーカーを使う段階によって処理量が変わるジョブ
ジョブ実行のキューイング上限や資源の不足ですぐに動けない実行を、失敗させずに待たせる大量のジョブを流す自動化されたパイプライン

⚠️ 頻出: 「時間に余裕のある夜間のバッチのコストを下げたい」は Flex 実行クラスです。「SLA が厳しい」ジョブには Flex は選びません。


④DynamicFrame と変換

変換内容
ApplyMapping列名と型を対応づけて変える
ResolveChoice1つの列に複数の型が混在する (例: 文字列と数値) ときの解決方法を決める
Relationalize入れ子の を平らなテーブルに分解する
Join / Filter / DropFields / DropNullFields結合、行の絞り込み、列の削除、空の列の削除
FindMatches (ML 変換)で、表記の揺れがある重複レコードを見つける

は toDF() で の DataFrame に、fromDF() で戻せます。Spark や DataFrame の豊富な関数を使いたい部分は DataFrame で書きます。


⑤プッシュダウン述語と読み取りの絞り込み ⚠️ 頻出

機能内容
(push_down_predicate)Data Catalog のパーティションを条件で絞り込み、該当するパーティションの のファイルだけを読む
カタログのパーティション述語 (catalogPartitionPredicate)パーティションの絞り込みを Data Catalog のサーバー側で行う。パーティションの数が非常に多いテーブルで、一覧の取得を速くする
列の選択列指向の形式 () では、必要な列だけを読む
の並列読み取りhashfield / hashpartitions で分割して並列に読む

2026年10月のパーティションだけを読む例です。

dyf = glueContext.create_dynamic_frame.from_catalog(
    database="sales", table_name="orders",
    push_down_predicate="year='2026' and month='10'")

読み込んでから filter で絞るのでは、全ファイルを読んだ後に捨てることになり、時間と が無駄になります。


⑥複数のソースの統合と書き込み

ジョブでは、 のファイル、 のデータベース、、 などを1つのスクリプトで読み、結合して書き込めます。

書き込み先ポイント
S3 ( など)partitionKeys でパーティションを作る。enableUpdateCatalog で Data Catalog のパーティションを更新できる
Redshift一時ディレクトリ (S3) を経由して でロードする。事前・事後の (preactions/postactions) でステージングテーブルからの ができる
/ / テーブル形式を指定して、行単位の更新・削除を行う

⑦変換サービスの選び分け ⚠️ 頻出

要件選ぶサービス理由
で の 、運用最小クラスター管理不要、Data Catalog と統合
既存の Spark/Hive/Presto のコードや細かいクラスター調整 (EMR Serverless)オープンソースのフレームワークを幅広く、設定の自由度が高い
小さなファイルを届いたそばから軽く変換 (15分以内)、ミリ秒単位の課金
データが既に にあり、 で変換Amazon Redshift ()データを動かさない
のデータを SQL で変換して別のテーブルに の / INSERT INTOサーバーレス、SQL だけ
コードを書かずに整形・クレンジング画面上のレシピで変換
ストリームのな集計秒単位の遅れ、状態の管理

⑧監視とデバッグの設定

設定用途
ジョブ・オブザーバビリティメトリクス で の使用、メモリ、、などを見る
継続的なログ記録実行中のログを CloudWatch Logs へ送る (無効だと完了後にしか見えない)
UIステージやタスクの所要時間、シャッフル、スキューを可視化
再試行回数失敗時の自動の再実行 (0〜10 回)。タイムアウトしたジョブは再実行されない
最大数同じジョブを同時に何本まで動かすか (既定 1)

性能の問題の調べ方は「変換処理のトラブルシューティングと高速化」の章で扱います。


試験対策

①判断マトリクス

問題文のキーワード選ぶ機能・設定
で の 、運用最小 の Spark ジョブ
小さなデータの軽い処理、分散不要Python shell ジョブ (または )
ストリームを Spark で変換し続けるGlue ストリーミング ETL
急がないジョブのコストを下げるFlex 実行クラス
段階で処理量が変わり、ワーカーが余るオートスケーリング
メモリ不足 (OOM) が頻発大きいワーカー (G.2X 以上) か R 系のワーカー
特定の日付のパーティションだけ読む
パーティションが非常に多く、一覧の取得が遅いカタログのパーティション述語、パーティションインデックス
1つの列に型が混在ResolveChoice
入れ子の を平らにRelationalize
表記の揺れがある重複の検出FindMatches
既存の Spark/Hive 資産、細かい調整
新規に分散 Python (Ray)Glue for Ray は新規受付終了。 + KubeRay

②よくある誤答

  • 小さなファイルの処理に大きな ジョブを使うこと。
  • 読み込んだ後で filter してパーティションを絞ること。で読む前に絞ります。
  • SLA の厳しいジョブに Flex を使うこと。開始が遅れることがあります。
  • 継続的なログ記録を無効のまま、実行中の問題を調べようとすること。

参考文献

  1. ※1出題比率: AWS 公式の試験ガイドに記載された、採点対象の設問のうちその分野が占める割合です。

検索

キーワードを入力してください