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

### Crawler Configuration options の効果をみていく

# 今回使うGlueのリソース名
#### クローラー名
se2_in8
se2_out11

#### ジョブ名
se2_job11

#### データ
入力:in8
出力:out11

# 全体の流れ

* 前準備
* Crawler Configuration option　のデフォルト値確認
* Configuration option の確認
* AWS Glue でデータストアの削除後のオブジェクトはどのように扱いますか？

# 前準備

### 今回使うサンプルログファイル(19件)

[Glueの使い方的な②(csvデータをパーティション分割したparquetに変換)](https://qiita.com/pioho07/items/523aec26ca5dc5bc9697)のジョブをse2_job10、入力データをin8、出力データをout11として今回利用する。

上記で実行した処理は以下のCSVファイルをyear,month,day,hourでパーティション分割している。

```csv:元となった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)をクローリングしたスキーマ情報

<img width="963" alt="スクリーンショット 0030-05-28 10.27.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/27932/b4022efb-3e87-04a3-1850-78b7f9bee416.png">

### Athena によるデータ内容確認

![スクリーンショット 0030-08-12 10.58.22.png](https://qiita-image-store.s3.amazonaws.com/0/27932/843f9a06-817b-424d-c86b-3d41a14028b3.png)

### Athena によるデータ件数確認

19件

![スクリーンショット 0030-08-12 10.58.45.png](https://qiita-image-store.s3.amazonaws.com/0/27932/8e4fe4a4-5591-1c64-4b29-1df52605e71c.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](https://qiita-image-store.s3.amazonaws.com/0/27932/47e99485-0e86-e627-351d-693eae1254f7.png)

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

# Configuration option の確認

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

[Glueの使い方的な⑭](https://qiita.com/pioho07/items/45b5b6412141e73c552d)に書きました

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

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

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

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

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

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

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

![スクリーンショット 0030-08-12 11.28.47.png](https://qiita-image-store.s3.amazonaws.com/0/27932/1a444cc7-a126-18be-a74f-5a7f23113a02.png)

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

![スクリーンショット 0030-08-12 11.30.51.png](https://qiita-image-store.s3.amazonaws.com/0/27932/b94d2141-8ac5-e112-a713-2ea348c51ca2.png)

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

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

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

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

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

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

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

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

![スクリーンショット 0030-08-12 12.36.39.png](https://qiita-image-store.s3.amazonaws.com/0/27932/cd3f52b5-a17a-40bb-775b-fe68de9afa55.png)

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

![スクリーンショット 0030-08-12 12.35.25.png](https://qiita-image-store.s3.amazonaws.com/0/27932/7761c2f6-6fe0-9c5d-a296-91c656fe7dde.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