👻

AWS Glue→Openmetadata・AWS Glue→Glue Data Catalog使ってみた

2024/12/07に公開

データベースのメタデータカタログ

データベースのメタデータカタログがなぜ必要か

メタデータとは、データそのものに関する情報である。
データベースのメタデータのカタログを用意することでデータの把握、利用、管理が簡単になる。
これによりデータ利用者・管理者がデータを効果的に活用できる。
具体的にいうと、企業では基本的にどこの誰がどういったデータを持っているか基本的にわからないことが多い。こういったデータを活用するための仕組みがデータレイクやデータウェアハウスでデータを一箇所に集め、データを整理する技術である。
ただそのままではデータの検索や活用が困難であるためどういったデータがあるか把握するための技術がメタデータカタログということになる。

具体例

データの把握

例えば企業のもつ顧客データに、顧客の名前、住所、購入履歴などが含まれているとして、メタデータがなければ、データ利用者は一目見て「購入履歴」の内容や、形式を把握することはできない。(「購入履歴」は顧客IDと商品IDのリストなど)
メタデータのカタログがあればこういった情報を俯瞰的に確認することが出来る。

データの利用

複数の組織で異なるデータベースを持っている場合、メタデータカタログ上で検索することで簡単にデータを見つけることが出来る。
csvやxlsxファイルにどこに何のデータベースがあるかの管理表を作成・保守するのは大変(ただ現状ではそういったところも多いと思う。)
カタログを検索することで、たとえ他部署・他グループでもデータセットを迅速に見つけ出すことができ、再利用することができる。

データの管理

データ管理の効率化
大規模なデータベースを管理している場合でもデータの作成日、最終更新日、使用状況などが追跡できる。
これにより、不要なデータの削除や更新が容易になり、データの保全やセキュリティが強化される。

試してみたメタデータカタログ

①AWS Glue → AWS Glue Data Catalog
②AWS Glue → Openmetadata

操作手順

[共通]S3上からAWS Glueにデータを取り込む

使用データセット

kaggleのタイタニックコンペからcsvをダウンロードして使用。
kaggle上では有名なコンペのようで入門としてよく使われているように思います。
このデータセットには、タイタニックの乗客の情報や生存状況などが含まれていてこの情報を学習したのちどういった人間が生き残るかを機械学習で予測するというもののようです。
https://www.kaggle.com/competitions/titanic/data

S3にcsvファイルを置く

方法は割愛しますが、念の為参考資料を置いておきます。(csvファイルのアップロードまでを参考)
ファイルは一つのバケット内に三つのファイルを格納しました。
https://dev.classmethod.jp/articles/lambda-s3/

[①AWS Glue → AWS Glue Catalog]

S3上のデータをAWS Glueのクローラーで取得し、メタデータをGlue Catalogに表示する。
そのためにまずGlueでS3のデータを取得できるようにする。

Glue側に Glue service IAMロールを付与

[参考記事]
https://zenn.dev/hisamitsu/articles/6c233d6d0f0817

出力先のデータベースを作成

create databaseを選択

スケジュールの設定

定期的にクロールを実行するを選んでしまうとGlueの料金が発生してしまうのでここはオンデマンドを実行を選択。
ちなみにAWS Glue クローラーはDPU時間という単位で課金額が決定する。
(DPU時間あたり $0.55)
AWS Glueの最低の起動時間は10分なのでこの6分の1課金されることになる。そのためオンデマンドにしておいた方が無難。

その後実行し以下メッセージ

メタデータの確認

S3バケットに入っているデータの構造がわかる。
列名などが確認できる。またフィルタで条件に沿って検索もできる。

[②AWS Glue → Openmetadata]

AWSのIAMでアクセスキー・シークレットアクセスキーを発行

Openmetadata上でAWSのアクセスキーとシークレットアクセスキーが必要なので発行

参考記事

https://qiita.com/raimu_hosoda/items/24b587fe44ced5262722

OpenmetadataのUIからGlueのデータベースを登録する。

Openmetadata上のUIの設定でデータベースを選択する。



アクセスキーとシークレットアクセスキーを設定

AWS Access KEY ID にアクセスキー、AWS Secret Access KEY IDにシークレットアクセスキーを入れてSaveを押す。

インジェスチョンは何も設定なしで次へだけを押すだけでした。


検索でglueを選択する

データベースを検索

データ構造を確認!

所感

AWSで完結させたい場合はGlueでメタデータを取るのが良いと思った。ただS3 metadataが出たので今後この辺りどうなるかわからない。
マルチクラウドだとOpenmetadataで一括して他のクラウドのデータのメタデータを管理したいと思うので Openmetadataを使用するのが良いように思いました。

Discussion