Posted at

AWS Glueで定期的にクロール。2018-06-01

More than 1 year has passed since last update.


内容

S3にログをアップロードして、それをAthenaで集計するというケースにのみ焦点をあてます。

AWSのGlueのクローラーで1度クロールするとテーブルが作成され、Athenaからselectできるようになります。

しかし、Glueのクローラには定期的に動かす設定もあります。

どのような時に定期的にクロールした方が良いのか一例を紹介します。


Glueのクローラがやってくれること

S3においてあるファイルの内容からよしなにテーブルスキーマを作成してくれます。

カラム名の設定、データの型の設定に加えて パーティション の追加も行なってくれます。


定期的にクローラを動かした方が良い例1

あまりないケースだと思いますが、頻度高めで項目が追加されるような場合は、定期的にクローラを実行してスキーマを更新すると良いでしょう。


定期的にクローラを動かした方が良い例2

おそらくほぼこちらのケースでクローラの定期実行が使われると思います。

それはパーティションの更新です。

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/glue-best-practices.html#schema-crawlers-schedule

基本的には指定のprefixが付いて入れば、S3にファイルを置くだけでAthenaからselectできるようになります。

しかしパーティションがあると、そうならない場合があります

新規で追加されたパーティションの以下にあるファイルはAthenaのselect対象になりません。


具体的には


  • S3のkeyに年月日が入っている BUCKET_NAME/logs/YYYY-MM-DD/AAA.json

  • 年月日がパーティションになっている

以上のような場合を考えます。

keyに年月日が入っているので、毎日ファイルがアップロードされるようなケースです。

パーティションになっている年月日の部分が毎日追加されていきます。

この場合、新しく追加された日のデータはクローラでパーティションを更新しないとAthenaからselectできるようになりません。


  1. 2018-06-01のファイルが新たに置かれる


    • 新しいパーティションが追加された



  2. この後何もしないでAthenaでselectしても2018-06-01のデータはselectできない

  3. Glueでクローラを動かして、パーティションを更新する

  4. Athenaで2018-06-01のデータもselectできるようになる


まとめ

パーティションがあるとGlueのクローラを動かして更新しないとselect対象にならない場合があるので注意です