

# 使用爬网程序添加表
<a name="schema-crawlers"></a>

Amazon Glue 爬网程序可帮助发现数据集的架构，并在 Amazon Glue Data Catalog 中将其注册为表。爬网程序会遍历您的数据并确定架构。此外，爬网程序还可以检测并注册分区。有关更多信息，请参阅《Amazon Glue 开发人员指南**》中的[定义爬网程序](https://docs.amazonaws.cn/glue/latest/dg/add-crawler.html)。可以从 Athena 查询成功抓取的数据中的表。

**注意**  
Athena 不承认您为 Amazon Glue 爬网程序指定的[排除模式](https://docs.amazonaws.cn/glue/latest/dg/define-crawler.html#crawler-data-stores-exclude)。例如，如果您有一个 Amazon S3 存储桶，其中包含 `.csv` 和 `.json` 文件，并且您从爬网程序中排除了 `.json` 文件时，Athena 会查询两组文件。要避免这种情况，请将要排除的文件放置在其他位置。

## 创建 Amazon Glue 爬网程序
<a name="data-sources-glue-crawler-setup"></a>

您可以通过在 Athena 控制台中启动，然后以集成方式使用 Amazon Glue 控制台来创建爬网程序。创建爬网程序时，您可以在 Amazon S3 中指定要爬取的数据位置。

**在 Amazon Glue 中从 Athena 控制台开始创建爬网程序**

1. 从 [https://console.aws.amazon.com/athena/](https://console.amazonaws.cn/athena/home) 打开 Athena 控制台。

1. 在查询编辑器中，选择 **Tables and views**（表和视图）旁的 **Create**（创建），然后选择 **Amazon Glue crawler**（爬网程序）。

1. 在 **Amazon Glue** 控制台的 **Add crawler (添加爬网程序)** 页面上，按照步骤创建爬网程序。有关更多信息，请参阅本指南中的[使用 Amazon Glue 爬网程序](#schema-crawlers)和《*Amazon Glue 开发人员指南*》中的[填充 Amazon Glue Data Catalog](https://docs.amazonaws.cn/glue/latest/dg/populate-catalog-methods.html)。

**注意**  
Athena 不承认您为 Amazon Glue 爬网程序指定的[排除模式](https://docs.amazonaws.cn/glue/latest/dg/define-crawler.html#crawler-data-stores-exclude)。例如，如果您有一个 Amazon S3 存储桶，其中包含 `.csv` 和 `.json` 文件，并且您从爬网程序中排除了 `.json` 文件时，Athena 会查询两组文件。要避免这种情况，请将要排除的文件放置在其他位置。

在爬取之后，Amazon Glue 爬网程序会自动分配某些表元数据，以帮助它与其他外部技术（如 Apache Hive、Presto 和 Spark）兼容。有时，爬网程序可能会错误地分配元数据属性。在使用 Athena 查询表之前，手动更正 Amazon Glue 中的属性。有关更多信息，请参阅《Amazon Glue 开发人员指南**》中的[查看和编辑表详细信息](https://docs.amazonaws.cn/glue/latest/dg/console-tables.html#console-tables-details)。

当 CSV 文件将每个数据字段都用引号引起来，使 `serializationLib` 属性错误时，Amazon Glue 可能会错误分配元数据。有关更多信息，请参阅 [处理引号中包含的 CSV 数据](schema-csv.md#schema-csv-quotes)。