Crawler Configuration options の効果をみていく
今回使うGlueのリソース名
クローラー名
se2_in8
se2_out11
ジョブ名
se2_job11
データ
入力:in8
出力:out11
全体の流れ
- 前準備
- Crawler Configuration option のデフォルト値確認
- Configuration option の確認
- AWS Glue でデータストアの削除後のオブジェクトはどのように扱いますか?
前準備
今回使うサンプルログファイル(19件)
Glueの使い方的な②(csvデータをパーティション分割したparquetに変換)のジョブをse2_job10、入力データをin8、出力データをout11として今回利用する。
上記で実行した処理は以下のCSVファイルをyear,month,day,hourでパーティション分割している。
deviceid,uuid,appid,country,year,month,day,hour
iphone,11111,001,JP,2017,12,14,12
android,11112,001,FR,2017,12,14,14
iphone,11113,009,FR,2017,12,16,21
iphone,11114,007,AUS,2017,12,17,18
other,11115,005,JP,2017,12,29,15
iphone,11116,001,JP,2017,12,15,11
pc,11118,001,FR,2017,12,01,01
pc,11117,009,FR,2017,12,02,18
iphone,11119,007,AUS,2017,11,21,14
other,11110,005,JP,2017,11,29,15
iphone,11121,001,JP,2017,11,11,12
android,11122,001,FR,2017,11,30,20
iphone,11123,009,FR,2017,11,14,14
iphone,11124,007,AUS,2017,12,17,14
iphone,11125,005,JP,2017,11,29,15
iphone,11126,001,JP,2017,12,19,08
android,11127,001,FR,2017,12,19,14
iphone,11128,009,FR,2017,12,09,04
iphone,11129,007,AUS,2017,11,30,14
今回利用する出力データ(out11)をクローリングしたスキーマ情報
Athena によるデータ内容確認
Athena によるデータ件数確認
19件
ディレクトリ構成
in8に入力ファイル、out11に出力ファイル
$ aws s3 ls s3://test-glue00/se2/in8/
2018-08-12 10:32:00 0
2018-08-12 10:34:17 691 cvlog.csv
$ aws s3 ls s3://test-glue00/se2/out11/
PRE year=2017/
2018-08-12 10:37:11 0
2018-08-12 10:52:53 0 year=2017_$folder$
$ aws s3 ls s3://test-glue00/se2/out11/year=2017/
PRE month=11/
PRE month=12/
2018-08-12 10:52:53 0 month=11_$folder$
2018-08-12 10:52:53 0 month=12_$folder$
Crawler Configuration options のデフォルト値確認
(いつの間にかGlueコンソールが日本語になっていた)
Configuration option の確認
クローラがデータストアのスキーマ変更を検出した場合に、AWS Glue はデータカタログでテーブルの更新をどのように取り扱いますか?
Glueの使い方的な⑭に書きました
AWS Glue でデータストアの削除後のオブジェクトはどのように扱いますか?
要するに元データが消えたらテーブルどうしますか?という設定。
選択できるオプションは以下の3つです
⑤ データカタログからテーブルを削除する
⑥ 変更を無視して、データカタログのテーブルを変更しない
⑦ データカタログで廃止されたテーブルにマーキングする
⑤ "データカタログからテーブルを削除する"
クローリングした際、元データが削除するとテーブルも削除される
実データ(今回だとS3上のデータ)を削除後、クローラー実行するとテーブルse2_in8が削除されました
以下のようにテーブルの更新はゼロと言う表示ですがテーブルは消えてます
ログ見るとデータないからDeletingって出てます
⑥ "変更を無視して、データカタログのテーブルを変更しない"
クローリングした際、元データを削除してもテーブルはそのまま変更しない
実データ(今回だとS3上のデータ)を削除後、クローラー実行するとテーブルse2_in8は残りました。
表示は⑤と似たような感じです
⑦ "データカタログで廃止されたテーブルにマーキングする"
クローリングした際、元データが削除するとテーブルに廃止フラグを立てる
実データ(今回だとS3上のデータ)を削除後、クローラー実行するとテーブルse2_in8のプロパティに"DEPRECATED_BY_CRAWLER"が追加されている
※"廃止"のところが いいえ -> はい になるかと思ったが違った(要確認)
クロールする前のテーブル情報はこちら
廃止について(公式ドキュメントより)
AWS Glue により、Data Catalog のテーブルは元のデータストアに存在しなくなったことが分かると、
そのテーブルは廃止されたとしてデータカタログにマークされます。
廃止されたテーブルを参照するジョブを実行する場合、ジョブは失敗する可能性があります。
廃止されたテーブルを参照するジョブを編集し、ソースおよびターゲットとして削除します。
廃止されたテーブルが不要になったら削除することをお勧めします。
こちらも是非
AWS Glue コンソールでのクローラの設定
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/crawler-configuration.html
Glueの使い方まとめ
https://qiita.com/pioho07/items/32f76a16cbf49f9f712f