LoginSignup
6
8

More than 5 years have passed since last update.

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

Posted at

内容

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対象にならない場合があるので注意です

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8