

# 支持的可供爬取的数据来源
<a name="crawler-data-stores"></a>

爬网程序可以同时爬取以下基于文件的数据存储和基于表的数据存储。


| 爬网程序使用的访问类型 | 数据存储 | 
| --- | --- | 
| 本机客户端 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/crawler-data-stores.html)  | 
| JDBC |  Amazon Redshift Snowflake 在 Amazon Relational Database Service（Amazon RDS）内部或 Amazon RDS 外部： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/crawler-data-stores.html)  | 
| MongoDB 客户端 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/crawler-data-stores.html)  | 

**注意**  
目前，AWS Glue 不支持数据流的爬网程序。

对于 JDBC、MongoDB、MongoDB Atlas 和 Amazon DocumentDB（与 MongoDB 兼容）数据存储，您必须指定爬网程序可用于连接到数据存储的 AWS Glue *连接*。对于 Amazon S3，您可以选择指定网络类型的连接。连接是存储连接信息（例如凭证、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 文件具有相同的架构，爬网程序会创建一个表。此外，如果对 Amazon S3 对象进行了分区，则只会创建一个元数据表，并将分区信息添加到该表的数据目录中。

**Amazon S3 和 Amazon DynamoDB**  
爬网程序使用 AWS Identity and Access Management（IAM）权限角色来访问您的数据存储。*传递给爬网程序的角色必须有权访问所爬取的 Amazon S3 路径和 Amazon DynamoDB 表*。

**Amazon DynamoDB**  
在使用 AWS Glue 控制台定义爬网程序时，请指定一个 DynamoDB 表。如果您使用的是 AWS Glue API，则可以指定表的列表。您可以选择仅爬取一小部分数据样本以减少爬网程序的运行时间。

**Delta Lake**  
对于每个 Delta Lake 数据存储，可以指定如何创建 Delta 表：  
+ **创建原生表**：允许与支持直接查询 Delta 事务日志的查询引擎集成。有关更多信息，请参阅[查询 Delta Lake 表](https://docs.aws.amazon.com/athena/latest/ug/delta-lake-tables.html)。
+ **创建符号链接表**：根据指定的配置参数，使用由分区键分区的清单文件创建 `_symlink_manifest` 文件夹。

**Iceberg**  
对于每个 Iceberg 数据存储，您可以指定一个 Amazon S3 路径，其中包含您的 Iceberg 表的元数据。爬网程序发现 Iceberg 表元数据后，会在 Data Catalog 中注册该元数据。您可以为爬网程序设置计划以保持表格最新。  
您可以为数据存储定义以下参数：  
+ **排除项**：允许您跳过某些文件夹。
+ **最大遍历深度**：设置爬网程序可以在您的 Amazon S3 存储桶中爬取的深度限制。默认的最大遍历深度为 10；您可以设置的最大深度为 20。

**Hudi**  
对于每个 Hudi 数据存储，您可以指定一个 Amazon S3 路径，其中包含您的 Hudi 表的元数据。爬网程序发现 Hudi 表元数据后，会在 Data Catalog 中注册该元数据。您可以为爬网程序设置计划以保持表格最新。  
您可以为数据存储定义以下参数：  
+ **排除项**：允许您跳过某些文件夹。
+ **最大遍历深度**：设置爬网程序可以在您的 Amazon S3 存储桶中爬取的深度限制。默认的最大遍历深度为 10；您可以设置的最大深度为 20。
由于与 Hudi 0.13.1 和时间戳类型不兼容，逻辑类型为 `millis` 的时间戳列将被解释为 `bigint`。在即将发布的 Hudi 版本中可能会提供解决方案。
Hudi 表分为以下几类，每个表都有具体含义：  
+ 写入时复制（CoW）：数据以列式（Parquet）存储，并且每次更新都会在写入过程中创建一个新版本的文件。
+ 读取时合并（MOR）：数据使用列式（Parquet）和基于行（Avro）的格式的组合进行存储。更新记录到基于行的增量文件中，并根据需要进行压缩以创建新版本的列式文件。
对于 CoW 数据集，每次更新记录时，包含该记录的文件都会使用更新后的值进行重写。对于 MoR 数据集，每次进行更新时，Hudi 仅写入已更改记录对应的行。MoR 更适合写入或更改繁重而读取量较少的工作负载。CoW 更适合更改频率较低但读取量繁重的工作负载。  
Hudi 提供三个查询类型用于访问数据：  
+ 快照查询：该查询用于查看截至给定提交或压缩操作时表的最新快照。对于 MOR 表，快照查询通过在查询时合并最新文件切片的基本文件和增量文件来显示表的最新状态。
+ 增量查询：查询只能看到自给定提交/压缩以来，写入表的新数据。这有效地提供了更改流以启用增量数据管道。
+ 读取优化查询：对于 MoR 表，查询将看到最新压缩的数据。对于 CoW 表，查询将看到最新提交的数据。
对于写入时复制表，爬网程序使用 ReadOptimized serde 在 Data Catalog 中创建单个表。`org.apache.hudi.hadoop.HoodieParquetInputFormat`  
对于读取时合并表，爬网程序在 Data Catalog 中为同一个表位置创建两个表：  
+ 带有后缀 `_ro` 的表，使用 ReadOptimized serde `org.apache.hudi.hadoop.HoodieParquetInputFormat`。
+ 带有后缀 `_rt` 的表，使用允许快照查询的 RealTime Serde：`org.apache.hudi.hadoop.realtime.HoodieParquetRealtimeInputFormat`。

**MongoDB 和 Amazon DocumentDB (with MongoDB compatibility)**  
支持 MongoDB 版本 3.2 及更高版本。您可以选择仅爬取一小部分数据样本以减少爬网程序的运行时间。

**关系数据库**  
使用数据库用户名和密码进行身份验证。根据数据库引擎的类型，您可以选择要爬网哪些对象，如数据库、架构和表。

**Snowflake**  
Snowflake JDBC 爬网程序支持爬取表、外部表、视图和实体化视图。不会填充实体化视图定义。  
对于 Snowflake 外部表，仅爬网程序指向 Amazon S3 位置时才会爬取。除了表架构外，爬网程序还将爬取 Amazon S3的位置、文件格式和输出作为数据目录表中的表参数。请注意，未填充分区外部表的分区信息。  
使用 Snowflake 爬网程序创建的数据目录表目前不支持 ETL。