本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。
最新の情報については、AWS 公式ドキュメントをご参照ください。
抽出、変換、ロード (ETL) プロセスの検出、準備、統合、近代化(モダナイゼーション)を容易にするサーバーレスデータ統合サービスです。
近代化(モダナイゼーション)とは、単にツールを新しくするだけでなく、データ統合のプロセス全体をよりスケーラブルで、管理しやすく、コスト効率の良いものに変革することを意味し、AWS Glueは、これらの「近代化」を実現するためのマネージドサービスです。
(引用元:AWS Glue の概念)
AWS Glueを理解する公式ドキュメントは次のとおりです。
【AWS Black Belt Online Seminar】AWS Glue(YouTube)(0:55:30)
AWS Glue【AWS Black Belt】(0:41:53)
[AWS Black Belt Online Seminar]猫でもわかる、AWS Glue ETLパフォーマンス・チューニング 基礎知識編(0:34:22)
[AWS Black Belt Online Seminar]猫でもわかる、AWS Glue ETLパフォーマンス・チューニング 後編(0:34:47)
【AWS Black Belt Online Seminar】AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-(0:57:13)
【AWS Black Belt Online Seminar】AWS Glue DataBrew(0:56:49)
AWS Glueを導入する主なメリットは以下の3つです。
Glueの主要な機能は次のとおりです。
データの場所やスキーマといったメタデータ管理する機能です。
データカタログは、データベースとテーブルというオブジェクトから構成されます。データベースは、データカタログを論理的にグループ化したものと言えます。 例えば、次のようなグループ化の方法があります。
テーブルは、データの場所やスキーマの情報が格納されています。 実際に格納されている情報はマネジメントコンソールで確認できます。 CloudTrailが出力したログのテーブルは次のようになっています。
テーブルはバージョン管理されていて、過去のバージョンとの比較もできます。
コンソールでのバージョン比較はこのように確認できます。
データカタログを利用できるAWSサービスは次のようなものがあります。
データカタログの利用イメージ(引用:Blackbelt)
メタデータをデータカタログに登録・更新する機能です。 定期的に実行することで、スキーマの自動更新が可能になります。
スケジュールは、オンデマンドで実行するか、定期的に実行するかを選択できます。 Hourlyなど簡単な設定方法や、cron形式で詳細な実行スケジュールを作成することもできます。
クローラーを定期的に実行させることで、新しいデータやスキーマの変更を検知できます。
クローラーが取得可能なデータソースは、ドキュメントによると次のようなものがあります。
標準でサポートしていないデータソースは、AWS Marketpkaceから取得するか、独自でカスタムコネクタを作成することができます。
ジョブとは、データソースに接続してデータターゲットに出力する処理を実行するものです。
ジョブの種類は以下のとおりです。
※15分以内に処理が完了でき、小規模な処理であればAWS Lambdaの利用も検討する。
ジョブには、DPU とワーカーというものがあります。
Glue Studioを使えば、GUIベースでETLジョブを構築することや、ジョブの実行、監視設定を行うことが可能です。
ETLジョブ、クローラーを自動化し、データカタログ出力までの一連の処理をGUIで管理する機能です。
AWSには、ワークフロー系のサービスはほかにもあります。
ETLジョブを実行する場合、処理済みデータを記録し、差分抽出を可能にする機能です。 job.init()
でブックマークの情報を取得し、job.commit()
が呼び出されたときに状態を記録します。 そのため、ジョブスクリプトからjob.commit()
が呼び出されていないと、ブックマーク機能を正常に利用できないことになります。
参考:エラー : ジョブのブックマークが有効なときにジョブがデータを再処理しています
Glueはもともとバッチ処理に特化したETLサービスという特徴があります。ただ、Glue Streamingを使うことで、準リアルタイム処理が可能になります。
具体的なユースケースは次のとおりです。詳細については、ドキュメントをご参照ください
例えば、Amazon Kinesis Data StreamsとAWS Glue Streamingを連携することで準リアルタイムのデータ処理が実現できます。 Kinesis Data Streamsがデータソースとできるサービスと組み合わせることで、さまざまなユースケースに対応することができます。
データのクリーニング、正規化、変換のためのフルマネージド型のビジュアルデータ準備サービスです。 null の削除、欠損値の置き換え、スキーマの不整合の修正、関数に基づく列の作成などが実施できます。
DataBrewは、S3に保存された以下のデータフォーマットをサポートしています。
ETLのジョブやワークフローは大きな運用負荷が伴います。このようなものを極力抑えるようにできるのが、ゼロETL統合です。 ETLの要件によっては、完全になくすことができる可能性があります。
GlueのゼロETLのデータソースとして、主に次のようなものがあります。 参考:ゼロ ETL 統合
GlueのゼロETLのデータターゲットとして、主に次のようなものがあります。
データレイクのデータに対して、ユーザーが定義したルールに従って品質を自動的に測定し、統計などを表示してくれるマネージドサービスです。 これによって、データの変化を監視し、予想外の値が入ってくることを検知できます。
データ品質定義言語 (DQDL) を用いてカスタムルールを定義することによって、データの品質をチェックすることができます。
具体的には次のような記述を行うことでデータをチェックできます。詳細は、データ品質定義言語 (DQDL) リファレンスを参照してください。
Rules = [
IsComplete "order-id",
IsUnique "order-id"
]
以下の動画では、AWS Glue Data Qualityがどのようにデータ品質を管理するかについての基本的な説明や主要な機能について説明されています。 Measure and Monitor Data Quality of your Datasets in AWS Glue Data Catalog(YouTube) | Amazon Web Services
Lake Formationを利用すると、Glueが作成したデータカタログに対して詳細なアクセスコントロールを行うことができます。
具体的には、以下のアクセス管理を行うことができます。
アクセス管理の方法は、次の2つの方法があります。
詳細については、Lake Formation 許可の管理を参照してください。
コスト最適化については、スキャンするデータ量を最小限にすることと、処理時間に見合うサービス選択を意識することが重要であると考えます。 具体的には、以下のようなポイントを考慮します。
また、コスト最適化については以下のAWSブログ記事をご参照ください
AWS Glue for Apache Spark のコストのモニタリングと最適化
AWS Glue のモニタリングは、以下のツールを利用することで実現できます。
"detail-type":"Glue Job State Change"
のイベントがSUCCEEDED、FAILED、TIMEOUT、STOPPED
に対して発生DeleteCrawler
アクションが発生した場合に通知AWS Glueは、モダンなデータ統合基盤として、以下の特徴を提供します。
これらの機能により、より価値の高いデータ分析に注力できる環境を実現できます。
詳しい内容については、AWS公式ドキュメントやAWS Black Belt Online Seminarをご参照ください。