概要
やりたいこと
Athena でパーティションを作成し、クエリ実行を行った。このパーティション作成するのに ALTER TABLE クエリを実行したが、この部分を自動化したい。
S3://waf-test-cross-account/2020/05/16/01/waflog.gz のように保存されているログに対して、パーティションを自動で区切られるようにする。
AWS Glue Crawlers
AWS Glue はクローラ(Crawlers)によって様々なデータストアからテーブルを定義でき、 ETL 処理を行うサービス。
今回は AWS Glue のサービスの一つであるクローラ を利用して Athena のパーティションを作成する。
- クローラ : 指定したデータストア (S3やRDSなど) を調べて、データカタログに登録する。定期実行をする事で、スキーマやパーティションの定期的な自動更新が可能。
- Glue データカタログ : データストアから自動的に作成されたメタデータ定義
コンソールから操作
Glue でクローラを作成
waf-test-cross-account バケットに対して Athena のテーブルを作成するクローラを作成する。
クローラの実行頻度は毎日 01:00 として、このタイミングパーティションが区切られる。
- AWS Glue コンソール
- 左メニューよりクローラ
- クローラの追加
- waf_log_crawler
- Data stores
- データストアの追加
- データストアの選択 : S3
- インクルードパス : s3://waf-test-cross-account/
- 別のデータストア追加 : いいえ
- IAM ロールを作成
- 頻度 : 毎日
- データベースの追加 : aws_waf_logs
クローラが作成されるので実行すると、データベースとテーブルが作成される。
このテーブルではパーティションが自動で区切られている。
WIP : パーティション名を変更
※クローラが実行されるとパーティション名が partition_0 に戻ってしまう
パーティション名が partition_0 や partition_1 とわかりにくいため、修正する。
テーブルを選択後、スキーマの編集より、パーテイょん名をクリックすることで編集できる。
編集したパーティション名で登録されていることを確認できる。
参考
AWS Athena + Glueを使ったデータ分析(パーティション自動化)
コメント