

# クロールでサポートされているデータソース
<a name="crawler-data-stores"></a>

クローラーは、次に示すファイルベースおよびテーブルベースのデータストアをクロールできます。


| クローラーが使用するアクセスタイプ | データストア | 
| --- | --- | 
| ネイティブクライアント |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/crawler-data-stores.html)  | 
| JDBC | Amazon Redshift<br />Snowflake<br />Amazon Relational Database Service (Amazon RDS) 内、または Amazon RDS の外部:[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/crawler-data-stores.html) | 
| MongoDB クライアント |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/crawler-data-stores.html)  | 

**注記**  
現在、AWS Glue ではデータストリームのクローラーがサポートされていません。

JDBC、MongoDB、MongoDB Atlas、Amazon DocumentDB (MongoDB 互換) データストアでは、クローラーがデータストアに接続するときに使用可能な AWS Glue *接続* を指定する必要があります。Amazon S3 の場合、オプションで Network タイプの接続を指定できます。接続とは、認証情報、URL、Amazon Virtual Private Cloud 情報などの接続情報を保存するデータカタログオブジェクトです。詳細については、「[データへの接続](glue-connections.md)」を参照してください。

クローラーがサポートするドライバーのバージョンは次のとおりです。


| 製品 | クローラーがサポートするドライバー | 
| --- | --- | 
| PostgreSQL | 42.2.1 | 
| Amazon Aurora | ネイティブクローラードライバーと同じ | 
| MariaDB | 8.0.13 | 
| Microsoft SQL Server | 6.1.0 | 
| MySQL | 8.0.13 | 
| Oracle | 11.2.2 | 
| Amazon Redshift | 4.1 | 
| Snowflake | 3.13.20 | 
| MongoDB | 4.7.2 | 
| MongoDB Atlas | 4.7.2 | 

次に、さまざまなデータストアに関する注意事項を示します。

**Amazon S3**  
自分のアカウントのパスをクロールするか、または別のアカウントのパスをクロールするかを選択できます。フォルダにあるすべての Amazon S3 ファイルが同じスキーマを持つ場合、クローラーはテーブルを 1 つ作成します。また、Amazon S3 オブジェクトが分割されている場合、メタデータテーブルは 1 つしか作成されず、そのテーブルのパーティション情報がデータカタログに追加されます。

**Amazon S3 と Amazon DynamoDB**  
クローラーは、AWS Identity and Access Management (IAM) ロールをアクセス許可のために使用して、データストアにアクセスします。*クローラーに渡すロールは、クロールされる Amazon S3 パスと Amazon DynamoDB テーブルにアクセスするためのアクセス許可を持っている必要があります*。

**Amazon DynamoDB**  
AWS Glue コンソールを使用してクローラーを定義するとき、1 つのDynamoDB テーブルを指定します。AWS Glue API を使用している場合、テーブルのリストを指定できます。クローラーの実行時間を短縮するために、データの小さなサンプルのみをクロールするように選択できます。

**Delta Lake**  
各 Delta Lake データストアで、Delta テーブルの作成方法を指定します。  
+ **[Create Native tables]** (ネイティブテーブルの作成): Delta トランザクションログの直接クエリをサポートするクエリエンジンとの統合を可能にします。詳細については、「[Delta Lake テーブルのクエリを実行する](https://docs.aws.amazon.com/athena/latest/ug/delta-lake-tables.html)」を参照してください。
+ **[Create Symlink tables]** (Symlink テーブルの作成): 指定された設定パラメータに基づいて、マニフェストファイルを分割キーで分割して `_symlink_manifest` フォルダを作成します。

**Iceberg**  
Iceberg データストアごとに、Iceberg テーブルのメタデータを含む Amazon S3 パスを指定します。クローラーは Iceberg テーブルのメタデータを検出すると、それをデータカタログに登録します。クローラーがテーブルを更新し続けるように、スケジュールを設定できます。  
データストアに次のパラメータを定義できます。  
+ **Exclusions**: 特定のフォルダをスキップできます。
+ **Maximum Traversal Depth**: Amazon S3 バケットでクローラーがクロールできる深度の制限を設定します。デフォルトの最大トラバーサル深度は 10 で、設定できる最大深度は 20 です。

**Hudi**  
Hudi データストアごとに、Hudi テーブルのメタデータを含む Amazon S3 パスを指定します。クローラーは Hudi テーブルのメタデータを検出すると、それをデータカタログに登録します。クローラーがテーブルを更新し続けるように、スケジュールを設定できます。  
データストアに次のパラメータを定義できます。  
+ **Exclusions**: 特定のフォルダをスキップできます。
+ **Maximum Traversal Depth**: Amazon S3 バケットでクローラーがクロールできる深度の制限を設定します。デフォルトの最大トラバーサル深度は 10 で、設定できる最大深度は 20 です。
Hudi 0.13.1 およびタイムスタンプ型と互換性がないため、論理型として `millis` を含むタイムスタンプ列は、`bigint` として解釈されます。解決策は、今後の Hudi リリースで提供される可能性があります。
Hudi テーブルは次のように分類され、それぞれが固有の意味を持っています。  
+ 書き込み時コピー (CoW): データは列形式 (Parquet) で保存され、更新ごとに書き込み中にファイルの新しいバージョンが作成されます。
+ 読み取り時マージ (MoR): データは、列形式 (Parquet) と行形式 (Avro) の組み合わせを使用して保存されます。更新は、行形式の差分ファイルに記録され、必要に応じて圧縮されて、新しいバージョンの列形式のファイルが作成されます。
CoW データセットでは、レコードが更新されるたびに、そのレコードを含むファイルが更新された値で書き換えられます。MoR データセットでは、更新があるたびに、Hudi によって変更されたレコードの行のみが書き込まれます。MoR は、読み取りが少なく書き込みまたは変更が多いワークロードに適しています。CoW は、頻繁に変更されないデータの読み取りが多いワークロードに適しています。  
Hudi にはデータにアクセスするためのクエリタイプが 3 種類用意されています。  
+ スナップショットクエリ: 指定されたコミットまたは圧縮アクションの時点で最新のテーブルスナップショットを参照するクエリです。MoR テーブルの場合、スナップショットクエリは、クエリ時に最新のファイルスライスのベースファイルとデルタファイルをマージして、テーブルの最新の状態を提示します。
+ 増分クエリ: クエリは、指定されたコミット/圧縮以降にテーブルに書き込まれた新しいデータのみを参照します。これにより、増分データパイプラインを有効にするための変更ストリームが効果的に提供されます。
+ 読み取り最適化クエリ: MoR テーブルの場合、クエリは圧縮された最新のデータを参照します。CoW テーブルの場合、クエリはコミットされた最新のデータを参照します。
書き込み時コピー (CoW) テーブルの場合、クローラーは ReadOptimized serde `org.apache.hudi.hadoop.HoodieParquetInputFormat` を使用して、データカタログに 1 つのテーブルを作成します。  
読み取り時マージ (MoR) テーブルの場合、クローラーはデータカタログ内の同じテーブルの場所に次の 2 つのテーブルを作成します。  
+ サフィックス `_ro` を持ち、ReadOptimized serde `org.apache.hudi.hadoop.HoodieParquetInputFormat` を使用するテーブル。
+ サフィックス `_rt` を持ち、スナップショットクエリを可能にする RealTime Serde `org.apache.hudi.hadoop.realtime.HoodieParquetRealtimeInputFormat` を使用するテーブル。

**MongoDB と Amazon DocumentDB (MongoDB 互換)**  
MongoDB バージョン 3.2 以降がサポートされています。クローラーの実行時間を短縮するために、データの小さなサンプルのみをクロールするように選択できます。

**リレーショナルデータベース**  
データベースのユーザー名とパスワードを使用して認証します。データベースエンジンのタイプに応じて、どのオブジェクト (データベース、スキーマ、テーブルなど) をクロールするかを選択できます。

**Snowflake**  
Snowflake JDBC クローラーは、テーブル、外部テーブル、ビュー、マテリアライズドビューのクローリングをサポートしています。マテリアライズドビュー定義は入力されません。  
Snowflake 外部テーブルについては、Amazon S3 の場所を指している場合のみクローラーによってクローリングされます。クローラーは、テーブルスキーマの他に、Amazon S3 の場所、ファイル形式、および出力をデータカタログテーブルのテーブルパラメータとしてクローリングします。分割された外部テーブルのパーティション情報は入力されないことに注意してください。  
Snowflake クローラーを使用して作成されたデータカタログテーブルでは、ETL は現在サポートされていません。