AWS Glue入門（１章 データ基盤とGlueの概要）

# はじめに
デジタル化が進む近年、企業は膨大な量と種類のデータを蓄積し分析することが可能になりました。その恩恵もありデータドリブン経営（データに基づいた経営）という経営手法を多くの企業は取り入れるようになりました。
データに基づいた客観的な判断をすることで、企業や経営者は多くのメリットを手に入れることができます。

蓄積されたデータを活用するためにはデータ基盤（データ活用基盤）が必要になります。データ基盤は一度構築すればそれで終わりではありません。企業活動の中で日々データの量や種類が増えていくため、性能の最適化や要件にあった設計やツールの導入などを常に検討していく必要があります。

本記事ではAWS上でデータ基盤を構築する上で重要な機能を提供するAWS Glueというサービスについていくつかの記事にわたって紹介します。

少しでもGlue導入のヒントになれば幸いです。


# データ基盤とは
データ基盤とは、企業や組織がデータを収集・管理・分析するためのシステム群を意味します。

データ基盤には以下の４つの役割があります。

・データの収集
・データの蓄積
・データの加工
・データの分析

そして、一般的なデータ基盤は以下の３層構造になっています。

・データレイク
・データウェアハウス
・データマート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1549760/366b846a-bc24-32ba-cebd-fb5192676718.png)
（引用元 : https://www.creativehope.co.jp/media/data-basis-process.html ）

必ずしも３層構造で設計するという決まりはありませんが、この３層構造はデータ基盤において最も基本的な形になるので、抑えておく必要があります。

## データ基盤の４つの役割

### データの収集
データを活用するためにはまずはデータを集める必要があります。
企業によっては複数のシステムを導入しているため、データが様々な場所に分散され管理されています。それぞれのシステムやデータベースから**サイロ化されたデータ**を集める必要があります。

**※サイロ化されたデータとは**
情報システムなどのデータでも単体の利用目的を果たすために保存され、他のシステムと連携が取れていない分断された状態のデータ

### データの蓄積
収集したデータはデータ基盤に蓄積をします。
データレイクを活用することで、構造化データ・半構造化データ・非構造化データなど様々なデータを一元管理することが可能になります。

### データの加工
効率的なデータ分析を行うために、分析しやすい状態にデータを加工する必要があります。
データを適切に加工することは、データ分析時の処理能力や分析の精度に影響するため、とても重要な役割になります。

### データの分析
最後にデータを分析します。
加工されたデータを意思決定する材料として利用しやすくするために、データの可視化をして分析を行います。
最近ではたくさんの便利な可視化・分析ツールやBIツールが提供されているため、適切なツール選定も大事なポイントです。また分析にAIを導入する企業も多くなってきました。




## データ基盤の３層構造

### データレイク
データレイクは、膨大なデータを生データのまま格納するための場所になります。構造化データ・半構造化データ・非構造化データなど、多種多様なデータをそのままの形式で保管します。そのため、データ活用の幅が広がります。
データレイクのデータにはデータウェアハウスやデータマートのように具体的な目的を持っているわけではなく、必要になったときのために蓄えておくという目的で保管されます。


### データウェアハウス
データウェアハウスはデータレイクの生データが処理されたデータを保管する場所になります。
分析しやすいようにデータの構造化やフォーマットの変換、重複データの削除や文字コード変換などのクレンジング処理を加えたデータを保管します。そのため、横断的な分析、整合性のあるデータの格納ができます。
これらの処理は**ETL**と呼ばれる処理で実装します。
ETLについては後ほど説明します。


### データマート
データマートは、データの利用部門や用途、目的などに応じて必要なデータだけを抽出し、利用しやすい形に加工したうえで格納する場所になります。
情報が網羅的に格納されるデータウェアハウスとは異なり、データマートはデータを目的や用途ごとに小分けしたデータを保管します。そのため、迅速にデータを取り出し、分析を最適化することができます。


## ETL処理
ETL処理とは、データを抽出（Extract）し、DWHに取り込みやすいフォーマットに変換・加工（Transform）し、DWHに書き出す（Load）という一連の処理を意味します。
それぞれの処理の頭文字を取って**ETL**と呼びます。

# AWS Glueの概要
AWS Glueは、AWSにおけるサーバーレスでスケーラブルなデータ統合サービスです。Glueを使うことにより、AWS内外の複数のソースからデータを検出・準備・移動・統合することができるため、データ分析・機械学習やそのほかのデータを活用したアプリケーション開発を非常に便利に進めることができます。

AWS Glueが提供する機能は多岐に渡るため、Glueがどんなサービスなのかひとことで表現することは難しいです。

以下の図はAWS Glue環境のアーキテクチャになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1549760/994196a1-4890-7066-228d-81ba85ffc24e.png)
（引用元 : https://docs.aws.amazon.com/glue/latest/dg/components-key-concepts.html ）

AWS Glueの主要な機能としては以下になります。
・Glueジョブ
・Glueデータカタログ

## Glueジョブ
Glueジョブは、Pythonでプログラムを組むことでサーバレスでETL処理を実装できる機能です。
Lambdaと似たような機能ですが、GlueジョブはApache Spark環境で実行され、ETLに特化したビルドイン機能やデータ処理に適したリソースの提供もしてくれる、データ処理に特化した機能になります。
時間ベースのスケジュールやイベントをトリガーにしてジョブを実行することも可能です。


## Glueデータカタログ
Glueデータカタログは、データのメタデータを保存する集中リポジトリです。
Glueデータカタログを使用することで、S3に保存されているCSVやParquetファイルなどの構造化データのスキーマ情報やファイルの保存場所などのメタデータを管理することができます。また、ETLジョブの定義に必要なその他のメタデータも含まれています。データの変更履歴なども保存できます。
手動でスキーマの定義をすること可能ですが、クローラーという機能を使用することでデータファイルから自動的にスキーマ情報を検出することも可能です。

# さいごに
今回はデータ基盤とAWS Glueの概要について紹介しました。
次回以降はAWS Glueのそれぞれの機能について詳細に紹介したいと思います。

# 参考記事
https://www.creativehope.co.jp/media/data-basis-process.html

https://aws.amazon.com/jp/glue/

https://docs.aws.amazon.com/glue/latest/dg/components-key-concepts.html