この記事の目次
「AWS Glue」の概要

「AWS Glue」とは?
「AWS Glue」とは、AWS(Amazon Web services)が提供しているフルマネージド型の「ETL(Extract:抽出、Transform:変換、Load:書込)」サービスです。※「ETL」は後述します。 この「Glue」というのは「接着剤」を意味しています。つまりデータ分析を行う際に、「AWS S3」、「Amazon RDS」、「Amazon Redshift」等の各種AWSサービス間の連携を仲介することで結びつけるという役割を示しています。 「フルマネージド型」というのは、Webサイト等を運用する際に必要となるサーバ機器やOS等のインフラ管理をAWS側で受け持ってくれることで、提供するサービスの利用のみに専念できるというサービスタイプのことです。「ETL」とは?
「ETL」とは、「Extract:抽出」、「Transform:変換」、「Load:書込(ロード)」の頭文字をつなげたものです。 データソースからデータを「抽出」し、データフォーマットを揃えるように「変換」し、「データウェアハウス(DWH)」やデータベース等に「書込」して蓄積するまでの一連の操作のことです。 特に、「ビジネス・インテリジェンス(BI)」用にDWHを構築する際には必須のプロセスとして知られています。 ビジネスでデータ分析を行う際には、DWHにフォーマットを揃えてデータを蓄積していく必要があります。ビジネス用の分析では、種々雑多なフォーマットのデータを収集する必要があります。しかしデータのフォーマットがバラバラのままではBIツール等で分析できません。 そこで、データを集めて一定のフォーマットに変換しながら統合していく処理が必要となります。「AWS Glue」は、こういった処理のためのETLツールを含めた包括的なサービスとなっています。「ETLツール」の具体的な処理内容
それでは、ETLツールの具体的な処理内容(「抽出」、「変換・加工」、「書込」)について解説していきます。 「抽出(Extract)」とは、情報元となるファイルやデータベース等の「データソース」から、一定の条件の元にデータを取得することです。 一般的にデータソースのデータ量は膨大になります。そのため、利用目的を明確にしてデータ分析に必要なものに絞り込むことで、データの抽出効率を向上させることがポイントとなってきます。 「変換・加工(Transform)」とは、抽出したデータに対してフォーマットの変換や不要なデータの削除等の加工といったデータ処理を行うことです。大規模なデータの場合には、「データウェアハウス(DWH)」等に書き込むためのフォーマットに整形する処理時間を可能な限り短縮することを目指します。 なお「抽出」の段階で、書込み可能なデータフォーマットにて整形されている場合は、この変換・加工は省略可能になるため、データソース側で最初から合わせるといった設計も行います。 「書込(Load)」とは、上記で変換・加工したデータをDWH等へ書き込む処理です。同内容の処理をDWH側の「インポート機能」を利用することでも実施可能です。「データ分析」の一般的なプロセス
次に、データ分析の一般的なプロセスを解説していきます。以下のプロセスでデータ分析が行われます。 最初に、情報元となるデータベースやファイル等からデータを収集します。ETLの「抽出」と「変換・加工」が、このプロセスに該当します。次に、収集した分析対象のデータをデータベースやストレージに保存します。このプロセスは、ETL処理の「書込(ロード)」に該当します。 ここで収集・保存したデータから状況を可視化して、将来のデータ値を予測するといったことでデータ分析を進めていきます。また予測した結果を他システムに連携する等のデータ活用も合わせて実施します。従来のデータ分析について
従来、情報元となるデータソースは、データの種類も少なく、CSV形式やデータベース形式等で予め「構造化」されていました。ETLツールも、構造化データに対して処理するため、複雑なデータ変換機能は不要でした。 またデータ保存方法では、ストレージ機器のコストも考慮されて、必要なデータに絞って加工・整形して保存しておくのが一般的でした。従来のデータ分析の課題
しかし、いわゆる「ビッグデータ」登場以後は、データ分析の世界が一新しました。 データ分析で扱うデータ規模が急拡大した結果、従来のETLツールでは、データの抽出や変換・加工に時間が掛かり過ぎるという問題が出てきました。 さらにビジネス要件に合わせて、様々な観点でデータ分析を実施するようになりました。例えば、ある観点で最初に分析した後に、別の観点で分析し直すということが頻繁に発生するようになりました。 そのため加工済みデータのみを保存するというわけにはいかず、未加工状態の大規模データを「生データ」として保存しておく必要が出てきました。「AWS Glue」の登場
大規模のデータ保存ができ、その大規模データを高速で処理することが可能な「データ分析基盤」と呼ばれる環境が必要となってきました。 さらに、ビジネス要件も多様化しハイピッチで変化が進むことで、データの種類や量も一層増加し、データ生成の速度も上昇していきました。 「AWS Glue」は、これらのニーズを受けて「データ分析基盤」のAWSサービスの一つとして登場しました。「AWS Glue」のメリット
それでは、「AWS Glue」のメリットについて確認していきましょう。 AWSのクラウド環境は、大規模データの保存に適しており、スケールアウトもしやすいことからデータ変換等の機能も高速化しやすいというメリットがあります。 また「AWS Glue」がデータ分析時の各種AWSサービスとの連携を一括で管理してくれるため、エンジニアは「ETLジョブ」の作成や監視といった付加価値の高い作業に専念できるというメリットもあります。 他にも、AWS上での「サーバーレス」サービスの一つであるため、インフラ基盤のセッティングやシステム管理が不要という点もコスト面から大きなメリットとなっています。「AWS Glue」の機能

「データストア」とは?
「データストア」とは、データを永続的に保存するリポジトリ(貯蔵庫)です。 先ほど説明した「データソース」は、「AWS Glue」でETL処理する際の入力先として使用するデータストアに該当します。「データカタログ」とは?
「データカタログ」とは、永続的なメタデータストアです。 ETL処理する際に必要なテーブル定義、ジョブ定義やその他制御情報を保持しています。またデータカタログは、AWSアカウント毎に一つ用意されています。 なお「メタデータ」とは、データそのものではなく、そのデータに関する属性等の付帯情報を記述したデータを指します。同様に「メタ◯◯」と表現されている場合は、「◯◯」に関する属性等の付帯情報を指すことになります。「クローラ」とは?
「クローラ」とは、「AWS Glue」の「データカタログ」に、データストアに関する「メタデータ」を作成するプログラムです。 「メタデータ」は、「テーブル情報」、「テーブルプロパティ」、「テーブルスキーマ」等の情報で構成されています。「クローラ」が、データストアからこれらの情報を抽出し、テーブル形式で「データカタログ」に保存しています。 また「クローラ」は、「Amazon S3」のようなストレージ内のファイルと、「Amazon DynamoDB」や「Amazon RDS」等のデータベースのテーブルとをクロールすることが可能です。「ジョブ」とは?
「ジョブ」とは、ETL作業を実行するための処理単位です。ジョブの種類は、「Apache Spark」と「Python Shell」の2種類のタイプがあります。 「Apache Spark」タイプは、「Apache Spark」のクラスタを制御して大規模分散処理を実行します。ジョブを起動すると、「ドライバー」と複数の「エグゼキューター」が起動し、スクリプトは「ドライバー」で実行されます。 「Python Shell」タイプは、Pythonスクリプトを実行するためのジョブです。Pythonのバージョン対応としては、Python 2.7またはPython 3.6と互換性のあるスクリプトが実行できます。「AWS Glue」の利用ケース
