6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

本記事では「AWS Glue」について、基本概念から実際のユースケースまでを解説します。
データエンジニアリングやデータ分析基盤の構築を検討している方に向けて、
Glueの機能と活用方法を詳しく説明していきます。

そもそもGlueとは大まかに何をするサービスか

GlueとはAWSが提供しているサーバレスのETLサービスのことです。

image.png
(AWS公式Glueアイコン)

ETLとはそれぞれ以下頭文字からとられた用語で、
分析などに使用されるデータを作成する、一連の流れを実施するサービスを指します。

  • E:Extract 抽出
     データ分析に使用されるデータの抽出
  • T:Transform 変換
     取得されたデータを分析に適した形へ変換、
     また個人情報へのマスキングなどの加工
  • L:Load 格納
     分析しやすい形などへの変換されたデータを指定の箇所へ保存

以下ETLのフローのイメージ図になります。
image.png
(Claude作成)

何ができるのか

ETLジョブ

上記内容の通り、データソースからデータを抽出、変換、格納する機能のことです。
Glue StudioにてPythonで抽出・変換・格納の処理を記載することができます。

または、Pythonが苦手、またコードを書くほどでもない簡単な処理の場合、
Visual ETLを使用することで、GUI上でETLジョブの一連の流れを作成できます。

以下がVisual ETLの画面になります。(処理内容に関してはあくまでイメージとなります。)
image.png

Lambdaとの違いは何か

Glue上でPythonを使用することでETLジョブ(データ加工の処理)を行うことができる、
という事を上記で記載しました。
ですが、LambdaでもPythonを使用しETLジョブ(データ加工の処理)を行う事が出来ます。

では、LambdaとGlueにはどのような違いがあるのかという点に注目して見ます。

リソース名 実行時間(最大) 費用計算の要素
Lambda 15分 メモリ、処理時間
Glue 2880分(48時間) DPU数、処理時間

実行時間

Lambda上でPythonを使用することでGlue ETLジョブと同じ処理を行う事が可能です。
ですが、Lambdaの実行時間は最大で15分という制限が存在します。

そのため、Lambdaで大規模なデータ(処理時間が15分を超えることが想定される)に対してLambdaを用いて処理を実施する際、Lambda以外のリソース(Step Functionsなど)を使用し、処理を分割して実行する必要があります。
→ 一つのLambdaで処理が完結できない。。。
 
一方AWS Glueの実行時間は最大で2880分(48時間)の為、
大規模なデータに対してもシンプルに処理を実行できます。

費用

Lambdaの場合、128 MB~10240 MBの範囲で設定できるメモリと、
実行時間に応じて従量課金が発生します。

一方GlueはDPU(Data Processing Unit)という単位が存在し、
割り当てたDPU数※1と実行時間に応じて従量課金が発生します。

※1. DPU(Data processing Unit)とは
DPUとはジョブ実行時に割り当てる処理能力の事を指しており、
1DPU = 4 vCPU、16 GB メモリ と定義されています。

より詳細な内容に関しては以下資料のスライド33を参照してください。
AWS Glue AWS Black Belt Online Seminar (P.33)

データカタログ

データカタログとは、AWS Glueがデータソースに対してETLジョブ実行時に使用する、
そのデータソースの情報が格納される場所のことです。
(データソースの情報:データソースの場所や、スキーマの情報などのメタデータ)
※実データが格納されているわけではなく、あくまでメタデータが格納されています。

image.png
(AWS公式Glue、データカタログアイコン)

具体的にメタデータはどこに格納されているのか

それぞれのメタデータは以下添付画像のようににテーブルと呼ばれる形で格納され、
テーブルはGlue上で作成してデータベース内に格納されている。

image.png

参考URL:
AWS Glue Data Catalog を理解する

クローラ

クローラとはソースデータのメタデータ(データの場所やスキーマ情報)を、
データカタログ(カタログ内のデータベースのテーブル)に登録・更新する機能です。

image.png
(AWS公式Glue、クローラアイコン)

なぜデータカタログ、クローラが大切なのか

Glueのジョブは、このクローラのテーブルに格納されたメタデータを使用して、
ソースデータを取得する処理を記載できるため、具体的なS3のパス記載が不要、
またソースデータのスキーマが変更された場合でも処理できるなどのメリットがあります。

以下で実際にジョブ内でクローラーにより作成されたテーブル(メタデータ)を使用して、
ソースデータを取得・格納する処理に関する”参考URL”を記載させていただきます。

参考URL:
Glue JobでData CatalogのデータをETL変換してS3に出力する方法

ワークフロー

上記機能(ETLジョブ・クローラ)を、一連の処理として自動化するための機能です。
ユーザは複数のETLジョブを連携させ、データの移動・変換の流れをGUI上で設計できます。

GUI上での記載例
以下ではスケジュールトリガー:Month-close1を用いて定時で、
ジョブ:De-deplicate、Fix phone numbersを実行し、処理完了を判定後、
クローラ:Update schemaを実行させるような流れの、
自動実行を行うようなワークフローを記載しております。
image.png
画像引用元:AWS Glue のワークフローの概要

実際のユースケース

AWS Glueは様々な用途で活用されています。
以下に代表的なユースケースを紹介します。

データレイクの構築

課題:
複数のデータソース(RDS、ログファイル、外部API)からのデータを統合し、
分析可能な形でS3に格納したい

Glueの活用方法:
各データソースに対してクローラを設定し、スキーマ情報を自動取得
ETLジョブでデータの形式統一、重複除去、フォーマット変換を実施
Parquet形式でS3のデータレイクに効率的に格納
ワークフローで日次バッチ処理を自動化

リアルタイムデータ処理との連携

課題:
Kinesis Data Streamsから流れてくるリアルタイムデータを、バッチ処理で集計・分析したい

Glueの活用方法:
Kinesis Data Firehose経由でS3にデータを蓄積
定期的にGlueジョブを実行し、時間単位・日単位での集計処理
集計結果をRedshift Spectrumで分析可能な形で格納

コンプライアンス対応

課題:
個人情報を含むデータを安全に処理し、分析用データを作成したい

Glueの活用方法:
ETLジョブ内で個人情報のマスキング・ハッシュ化を実施
AWS Lake Formationと連携してアクセス制御を強化

さいごに

Glueを活用することで、Lambdaを使用したETL処理に比べ、処理の幅が広がり、
かつGUI上でETLジョブを記載できることから、プログラミングに詳しくない人にとっても、
使い勝手の良いリソースであることが分かりました。

この記事をきっかけに、少しでもGlueに対しての理解が深まれば幸いです。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?