All Articles

AWS Glue の使い方は?データカタログ?クローラ?ジョブ?

AWS Glue の概要

AWS Glue を一言でいうと、ETL のマネージドサービスです。

ETL でデータを取得する先のデータベーススキーマを管理する機能や、ETL のジョブをサーバレスで実行する機能などを持ちます。

全体像

Glue に登場する主な概念は以下のようになります。

AWS_Glue

2020/7/10 時点で Glue のマネジメントコンソール上のメニューは「データカタログ」と「ETL」の 2 つに分類されています。

Glue の使い方の概要が分かるよう、「データカタログ」と「ETL」のそれぞれについて説明していきます。

データカタログ

まずは「データカタログ」に分類される、データベーススキーマの管理に関する機能です。

データベース・テーブル

AWS_Glue-database

ETL の入力となるデータベースのスキーマを管理する機能です。

API などを使って手動で登録することもできますし、後述するクローラを使って自動で登録することもできます。

接続

AWS_Glue-connection

データベースの接続設定 (JDBC の URL やユーザ名・パスワード) です。

Glue の機能でデータベーススキーマを自動取得 (クローリング) したり、ETL 処理を実行する際に使います。

クローラ・分類子

AWS_Glue-crawler

クローラを使うことで、データベースをクローリングし、スキーマを自動で取得することが可能です。

分類子は、クローラがスキーマを認識する方法の設定みたいなものです。

クローラを使って自動でスキーマを登録することで、スキーマが変わった際に追従するのも楽になります。

後述するトリガーによって定期的にクローリングすることも可能です。

ETL

続いて、「ETL」に分類される、実際の ETL 処理に関する機能です。

ジョブ

AWS_Glue-job

ETL の処理です。

Glue は Python のスクリプトや Spark などの実行環境を選べるので、その実行環境で実行するコードを指定してジョブを作成します。

トリガー

AWS_Glue-trigger

クローラやジョブを定期実行したりする際に使うのがトリガーです。

トリガーの発火条件として他のトリガーやジョブを指定することもできます。

ワークフロー

AWS_Glue-workflow

ワークフローを使うと、トリガーやジョブを複雑に組み合わせた ETL 処理を可視化したりできます。

ML 変換

AWS_Glue-ml-transform

データの前処理として必要な変換を機械学習で実行する機能です。

開発エンドポイント・ノートブック

AWS_Glue-development-endpoint

Glue のジョブは実行待ち時間があったりするため、スクリプトを開発するのが結構大変です。

スクリプトの実装を楽するための設定が開発エンドポイントです。

開発エンドポイントにはローカルや VPC に起動した Jupyter などを接続することも可能ですが、Sagemaker のノートブックと連携する機能も用意されています。

開発エンドポイントは料金が結構高いので、作成したまま放置しないようご注意ください。

ローカルに完結したスクリプト実装も可能なようなので、試してみるとよさそうです。

参考

おわりに

私が初めて Glue を使おうとしたときは、思っていたより多機能で、どこから着手したものかと思いました。

雰囲気が分かると意外と簡単に使えたりするので、是非さわってみてください。

開発エンドポイントという機能がありはするものの、自動テストなどによるコードの動作保証にはなかなか苦労すると思います。

スクリプトの自動テストや CI / CD は工夫しがいがあって面白いかもしれません。

参考

Web

書籍

2020 年 7 月に発売された書籍『AWSではじめるデータレイク: クラウドによる統合型データリポジトリ構築入門』では、Glue を ETL として利用する典型的な例や、Glue のデータカタログを Athena で利用する例が画面キャプチャ付きで丁寧に解説されてます。 データレイクに限らず、データウェアハウスなども含めた AWS でのデータ分析について幅広く学べる書籍です。