AWSのETLツール「AWS Glue」とは?
目次
ETL(Extract, Transform, Load)の役割
データ分析を行うためには、分析対象となるデータをデータソース(データの生成元)からDWHなどのデータ分析基盤に移すことが必要になります。このような、データソースからデータ分析基盤にデータを移す作業をETLといいます。
ETLとは「Extract(抽出)」「Transform(変換)」「Load(書き出し)」の略語で、具体的にはデータベースやデータレイクからデータをExtract(抽出)し、Transform(変換)して、DWHへLoad(書き出し)する作業を意味します。なぜETLが重要なのでしょうか。またETLとはどのような処理なのでしょうか。
構造化データと非構造化データ
一般的にデータと呼ばれるものには、構造化データと非構造化データの2種類が存在します。構造化データとは、エクセルのように「列」「行」があり、「列」「行」にそれぞれ関係性を持っているデータのことを指します。一方で非構造化データは、構造化データ以外のすべてと考えることができます。
具体的にはメールやPDFファイル、エクセルやワードで作った個々のファイル、動画や音楽データなど、それぞれのデータ間に関係性が薄いデータです。構造化データは簡単にデータ分析を行うことが可能ですが、通常のリレーショナルデータベースに格納されていることが多く、通常のリレーショナルデータベースはデータ分析目的で開発されたものではないため、分析には不向きな面があります。また、非構造化データはそのままでは分析することができません。
したがって、ETL処理を実施し、DWHなどで分析ができるようにデータを加工しておく必要があります。
Extract(抽出)
ETL処理にはどのような処理があるのか、それぞれ見ていきます。
Extract(抽出)とは、データベースなどの構造化データや、テキストファイルとして保存されている非構造化データなど、多方面に点在しているデータを一か所に集約する機能です。ただし、集めるデータはのちの分析にて必要とされるデータのみを対象とします。
Transform(変換)
Transformとは、Extractにて抽出されたデータをDWHにて分析しやすいデータ形式へ変換する機能です。具体的には、ログなどのテキストファイルを分割してCSVのように分析しやすい形式に変換する、個人情報などのセキュリティ上扱いにくいデータを、仮名化と呼ばれる、個人を特定しにくいデータにする作業を行って扱いやすくする、といった作業を行います。
Load(書き出し)
Loadとは、TransformしたデータをDWHなどのデータ分析基盤へ保存する機能を指します。DWHへは基本的に構造化データとしてデータを保存するため、保存の形式を指定してDWHへデータを保存します。成型されたデータをDWHへ保管しておくことで、BIツールの使用時にすばやく分析へとりかかれます。
高速、低コストで実現するスタイルズのAWSによるBI・DWH・データレイク構築サービスはこちら→
AWS Glueとは
AWS GlueはAWS(Amazon Web Services)で提供されているサーバーレスのETLサービスです。データ分析、機械学習、アプリケーション開発のためのデータ検出、準備、結合をシンプルでスケーラブルに行うための機能が備わっています。また、データがどこにあるのか、どのようなデータなのかを記述し、データを管理しやすくする機能も備わっています。AWS Glueの機能や特徴について、見ていきましょう。
AWS Glueの主要機能
AWS Glueの主要機能は主に下記の4機能となります。
- ETLジョブ
- データカタログ
- クローラ
- ワークフロー
具体的な機能について、それぞれ見ていきましょう。
ETLジョブ
データソースから必要なデータを抽出したあと、DWHにデータを連携する機能です。データ分析の要件に応じて、サーバーレスの実行エンジンにてデータ変換ジョブを実行することも可能です。
具体的には、Lambdaと同じようにサーバーレスでPythonプログラムなどを実行することができ、JSONなどのデータをCSVに変換する、といった処理を実行することが可能です。Lambdaだと実行時間が15分まで、といった制約がありますが、Glueではデフォルトで実行時間が2880分まで稼働することが可能で、大規模かつ長時間のデータ処理も実行することができます。
データカタログ
データカタログはGlueにおけるETLジョブのデータソースおよびターゲットとして使用するデータの説明を記載することができます。データカタログにはデータの場所、スキーマなどの情報が保存されます。このような、データがどのようなデータかを表わす情報のことをメタデータと呼びます。
データ分析を行う際には、データの発生源や分析対象のデータがどのようなデータか、説明をおこなうメタデータが必要です。メタデータがないと、高速で高頻度なデータ分析ができなかったり、データ分析を行った結果の信頼性が揺らいだり、といった事態を招きます。
クローラ
データレイクをクローリング(定期的にチェック)し、メタデータをデータカタログに登録・更新する機能です。定期実行をする事で、スキーマの定期的な自動更新も可能です。クローラは、機械学習を用いてデータストアにあるデータのスキーマを推定し、検出します。また、推定がどの程度確かかを示す確信度数(certainty)も提示することが可能です。
ワークフロー
ETLジョブ、クローラ、データカタログ出力までの一連の処理を自動化するための機能として、ワークフローが用意されています。ETLジョブによるデータ取り込み→クローラーの起動によるデータカタログへの登録は、従来はLambdaなどを間に挟むことで自動化してきましたが、Lambda連携は視認性が悪く、自動化にも手間がかかっていました。
ワークフロー機能を利用することで、Glueのサービスとして可視化することと、自動化を簡単に実現することができるようになりました。
最近のリリース「Glue Studio」「Glue DataBrew」
AWSのサービスでは、日々アップデートにより様々な機能が追加されています。AWS Glueにおいても、2020年9月に「Glue Studio」、2020年11月に「Glue DataBrew」がリリースされています。それぞれどのような機能なのか、見ていきましょう。
Glue Studio
AWS Glue Studioでは、GUIベースでETLジョブを構築することや、ジョブの実行、監視設定を行うことが可能です。従来では、ジョブ作成にはApache Sparkのコードを記述するスキルが必要でしたが、本機能ではそのようなスキルがなくても、ボックスと矢印をつなげ、プルダウンメニューやチェックボックスなどを選択するだけでサーバーレスなApache SparkベースのETL処理を構築することが可能です。
Glue DataBrew
機械学習やデータ分析の前には、欠落データの補完やデータの正規化といった、前段階の処理を行うケースがあります。Glue DataBrewを使うことで、GUIベースでデータの前処理を行うことが可能です。DataBrewもサーバレス構成となっており、インフラ構成を管理すること無くテラバイト級の生データを分析のために前処理することが可能になっています。
高速、低コストで実現するスタイルズのAWSによるBI・DWH・データレイク構築サービスはこちら→
AWS Glueのメリット
PythonとJupyter Notebookなどを組み合わせても、Glueと同じような処理を実施することが可能ですが、Glueを使うことによってどのようなメリットが得られるのでしょうか。
- サーバーレス構成で運用負荷を軽減
AWS Glueはサーバーレスであるため、基盤の可用性やデータ容量に応じたサイジングなどが考慮不要です。したがって、Notebookインスタンスを利用する場合と比べて運用が大幅に簡略化することができます。 - 豊富な自動化機能
データ分析は時間がかかる処理が多く、手動では待ち時間が多くかかってしまいます。Glueのワークフロー機能やクローラーをうまく使うことで、データ分析環境の処理や更新を自動化することができ、工数削減につながります。 - データ分析の高速化
データは時間がたてばたつほど、ヒストリカルデータとなりデータの価値が逓減していきます。データ分析はなによりも高速に実施する必要がありますが、Glueを使うことでデータ分析の前処理などが高速に行うことができ、データ分析によるメリットを最大限に生かすことができます。
AWS Glueの料金
実行中にジョブが使用するリソースやデータ容量、クローラに対して料金が発生します。具体的には下記のように課金が発生します。
- DPU(Data Processing Unit)に対する課金
ETLジョブの実行に使用されたDPU(Data Processing Unit)の数に基づいて発生します。 - データカタログの利用に応じた課金
データカタログとして使用しているオブジェクトが100万個を超えた場合やデータカタログへのアクセスが100万回を超えた場合に発生します。 - クローラの利用による課金
クローラの実行に使用されたDPU(Data Processing Unit)の数に基づいて時間あたりの課金が発生します。
詳細な料金については、利用前に試算をしてみるといいでしょう。
まとめ
高速なデータ分析を行うことで、データを有効に活用することができます。AWS Glueを使うことで、高速かつ安価でデータ分析を実施する環境を整備することができます。詳細な使用方法や要件に合った導入を進める場合は、専門のベンダーに相談してみるといいでしょう。