【AWS】AWS Glue ~ 基本編 / クローラ ~

■ はじめに

https://dk521123.hatenablog.com/entry/2019/10/01/221926

の続き。
今回は、クローラ(Crawler)について、焦点を当てる

目次

【1】クローラ(Crawler)
【2】用語整理
 1)データストア(データソース / データターゲット)
 2)データカタログ(Data Catalog)
【3】Athena との連携
【4】クローラ関連のBoto3 API

【1】クローラ(Crawler)

* S3においてあるファイルの内容やフォルダ構成から
  自動的にテーブルスキーマを解析し、データカタログに保存

クロール可能なデータストア

 S3、DynamoDB、RDS、Redshift等

結局、何が嬉しい?

* クローリングして、自動的に
 データカタログを作成(パーティション作成含む)することにより、
 Amazon Athena や EMR などからデータを取得することができる

Amazon Athena ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/06/17/173717
Amazon EMR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/20/230519

公式サイト

サポートしているファイル形式
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/console-tables.html

* JSON
* CSV
* Parquet
* Avro
* XML

Parquet については、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2020/06/03/000000

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/add-crawler.html

より一部抜粋

クローラを実行するとどうなるか

クローラを実行すると、
クローラは以下のアクションを使用してデータストアを調査します。

raw データの形式、スキーマ、および関連プロパティを
確認するためにデータを分類する

 – カスタム分類子を作成して分類の結果を設定できます。
 データをテーブルまたはパーティションにグループ化する

 – データはクローラのヒューリスティックに基づいてグループ化されます。
 メタデータを Data Catalog に書き込む

 – クローラでテーブルやパーティションを追加、更新、削除する方法を設定できます。

クローラは、どのようにパーティションを作成するタイミングを判断していますか?

テーブルの名前は Amazon S3 プレフィックスまたはフォルダ名に基づいています。

s3://bucket01/folder1/table1/partition1/file.txt
s3://bucket01/folder1/table1/partition2/file.txt
s3://bucket01/folder1/table1/partition3/file.txt
s3://bucket01/folder1/table2/partition4/file.txt
s3://bucket01/folder1/table2/partition5/file.txt
~~~~~~~~

【2】用語整理

1)データストア(データソース / データターゲット)

* データを永続的に保存するリポジトリ(ex S3, RDS)
* データストアは、以下の2種類。
 [1] データソース(Data Source = データ元)
 ⇒ 入力としてとして使用されるデータストア
 [2] データターゲット(Data Target = データ先)
 ⇒ 書込み先のデータストア

2)データカタログ(Data Catalog)

* データセットの構造上および運用上の
 メタデータ(テーブルの定義や物理的な場所)を保存するもの

※ メタデータの詳細は、以下の関連記事を参照のこと

Hive / HiveQL ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2019/11/25/235219

* 公式サイトは以下。

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/populate-data-catalog.html

【3】Athena との連携

* 以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2020/07/15/162459

【4】クローラ関連のBoto3 API

* 以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2019/10/14/000000

■ 関連記事

AWS Glue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/01/221926
AWS Glue ~ 基本編 / ジョブ ~
https://dk521123.hatenablog.com/entry/2019/11/17/231505
AWS Glue ~ 基本編 /トリガ ~
https://dk521123.hatenablog.com/entry/2019/11/29/221207
AWS Glue ~ クローリング結果の確認画面 ~
https://dk521123.hatenablog.com/entry/2021/05/28/142153
Glue から DataCatalogテーブル に対して Spark SQLを実行する
https://dk521123.hatenablog.com/entry/2021/05/11/220731
Glue Job から パーティションを更新することを考える
https://dk521123.hatenablog.com/entry/2021/05/15/130604
Workflows / Boto3・AWS CLI
https://dk521123.hatenablog.com/entry/2019/10/14/000000
AWS Glue ~ Boto3 / クローラ編 ~
https://dk521123.hatenablog.com/entry/2021/04/16/135558
AWS Glue のトラブル その1
https://dk521123.hatenablog.com/entry/2019/10/25/232155
AWS Glue のトラブル その2
https://dk521123.hatenablog.com/entry/2020/05/07/144132
Amazon Athena ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/06/17/173717
Amazon Athena ~ 基本編 / AWS Glue との連携 ~
https://dk521123.hatenablog.com/entry/2020/07/15/162459
Hive / HiveQL ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2019/11/25/235219
Parquet ファイル
https://dk521123.hatenablog.com/entry/2020/06/03/000000