LoginSignup
4
2

More than 5 years have passed since last update.

Glueの使い方的な⑮(クローラー(Crawler)のConfiguration option その2)

Posted at

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でパーティション分割している。

元となったCSVファイルcvlog.csv
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)をクローリングしたスキーマ情報

スクリーンショット 0030-05-28 10.27.50.png

Athena によるデータ内容確認

スクリーンショット 0030-08-12 10.58.22.png

Athena によるデータ件数確認

19件

スクリーンショット 0030-08-12 10.58.45.png

ディレクトリ構成

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 のデフォルト値確認

スクリーンショット 0030-08-12 11.02.51.png

(いつの間にかGlueコンソールが日本語になっていた)

Configuration option の確認

クローラがデータストアのスキーマ変更を検出した場合に、AWS Glue はデータカタログでテーブルの更新をどのように取り扱いますか?

Glueの使い方的な⑭に書きました

AWS Glue でデータストアの削除後のオブジェクトはどのように扱いますか?

要するに元データが消えたらテーブルどうしますか?という設定。

選択できるオプションは以下の3つです

⑤ データカタログからテーブルを削除する
⑥ 変更を無視して、データカタログのテーブルを変更しない
⑦ データカタログで廃止されたテーブルにマーキングする

⑤ "データカタログからテーブルを削除する"

クローリングした際、元データが削除するとテーブルも削除される

実データ(今回だとS3上のデータ)を削除後、クローラー実行するとテーブルse2_in8が削除されました
以下のようにテーブルの更新はゼロと言う表示ですがテーブルは消えてます

スクリーンショット 0030-08-12 11.28.47.png

ログ見るとデータないからDeletingって出てます

スクリーンショット 0030-08-12 11.30.51.png

⑥ "変更を無視して、データカタログのテーブルを変更しない"

クローリングした際、元データを削除してもテーブルはそのまま変更しない

実データ(今回だとS3上のデータ)を削除後、クローラー実行するとテーブルse2_in8は残りました。

表示は⑤と似たような感じです

⑦ "データカタログで廃止されたテーブルにマーキングする"

クローリングした際、元データが削除するとテーブルに廃止フラグを立てる

実データ(今回だとS3上のデータ)を削除後、クローラー実行するとテーブルse2_in8のプロパティに"DEPRECATED_BY_CRAWLER"が追加されている

※"廃止"のところが いいえ -> はい になるかと思ったが違った(要確認)

スクリーンショット 0030-08-12 12.36.39.png

クロールする前のテーブル情報はこちら

スクリーンショット 0030-08-12 12.35.25.png

廃止について(公式ドキュメントより)

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

4
2
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
4
2