

# 教程：添加 AWS Glue 爬网程序
<a name="tutorial-add-crawler"></a>

对于此 AWS Glue 场景，需要您分析主要航空公司的抵达数据，从而计算出发机场每月的受欢迎程度。您拥有以 CSV 格式存储在 Amazon S3 中的 2016 年的航班数据。在转换和分析数据之前，请您先将其元数据编录在 AWS Glue Data Catalog 中。

在本教程中，让我们添加一个能够根据 Amazon S3 中的这些飞行日志推断元数据，并且能在您的数据目录中创建表的爬网程序。

**Topics**
+ [先决条件](#tutorial-add-crawler-prerequisites)
+ [步骤 1：添加爬网程序](#tutorial-add-crawler-step1)
+ [步骤 2：运行爬网程序](#tutorial-add-crawler-step2)
+ [步骤 3：查看 AWS Glue Data Catalog 对象](#tutorial-add-crawler-step3)

## 先决条件
<a name="tutorial-add-crawler-prerequisites"></a>

本教程假定您拥有 AWS 账户并具有对 AWS Glue 的访问权限。

## 步骤 1：添加爬网程序
<a name="tutorial-add-crawler-step1"></a>

使用以下步骤配置并运行能够从 Amazon S3 存储的 CSV 文件中提取元数据的爬网程序。

**要创建能够读取 Amazon S3 存储的文件的爬网程序**

1. 在 AWS Glue 服务控制台的左侧菜单，选择 **Crawlers (爬网程序)**。

1. 在“爬网程序”页面上，选择**创建爬网程序**。这将打开一系列页面，提示您输入爬网程序详细信息。  
![屏幕截图显示的是爬网程序页面。在这里，您可以创建爬网程序或者编辑、复制、删除、查看现有的爬网程序。](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/crawlers-create_crawler.png)

1. 在 Crawler name (爬网程序名称) 字段中，输入 **Flights Data Crawler**，然后选择 **Next (下一步)**。

   爬网程序会调用分类器来推断您的数据架构。预设情况下，本教程使用 CSV 的内置分类器。

1. 对于爬网程序源类型，选择 **Data stores (数据存储)**，然后选择 **Next (下一步)**。

1. 现在，让我们将爬网程序指向您的数据。在 **Add a data store (添加数据存储)** 页面上，选择 Amazon S3 data store (Amazon S3 数据存储)。本教程不使用连接，因此请将 **Connection (连接)** 字段留空（如果可见）。

   对于 **Crawl data in (对以下位置的数据进行爬网)** 选项，选择 **Specified path in another account (另一个账户中的指定路径)**。然后，对于 **Include path (包含路径)**，输入爬网程序可以找到航班数据的路径，即 **s3://crawler-public-us-east-1/flight/2016/csv**。输入路径后，此字段的标题将更改为 **Include path (包含路径)**。选择**下一步**。

1. 您可以使用单个爬网程序对多个数据存储进行爬网。但是，在本教程中，我们只使用单个数据存储，因此选择 **No (否)**，然后选择 **Next (下一步)**。

1. 爬网程序需要权限才能访问数据存储并在 AWS Glue Data Catalog 中创建对象。要配置这些权限，请选择 **Create an IAM role (创建 IAM 角色)**。IAM 角色名称以 `AWSGlueServiceRole-` 开头，另外在字段中，请您输入角色名称的最后一部分。输入 **CrawlerTutorial**，然后选择 **Next (下一步)**。
**注意**  
要创建 IAM 角色，您的亚马逊云科技用户必须具有对 `CreateRole`、`CreatePolicy` 和 `AttachRolePolicy` 的访问权限。

   向导将创建名为 `AWSGlueServiceRole-CrawlerTutorial` 的 IAM 角色，并为此角色附上 AWS 托管式策略 `AWSGlueServiceRole`，然后添加允许对 Amazon S3 位置 `s3://crawler-public-us-east-1/flight/2016/csv` 进行读取访问内联策略。

1. 创建爬网程序计划。对于 **Frequency (频率)**，选择 **Run on demand (按需运行)**，然后选择 **Next (下一步)**。

1. 爬网程序在数据目录中创建表。数据目录中的数据库包含元数据表。首先，选择 **Add database (添加数据库)** 来创建数据库。在弹出窗口中，输入 **test-flights-db** 作为数据库名称，然后选择 **Create (创建)**。

   接下来，输入 **flights** 作为**添加到表中的前缀**。使用其余选项的原定设置值，然后选择 **Next (下一步)**。

1. 验证您在 **Add crawler (添加爬网程序)** 向导中所做的选择。如果看到任何错误，您可以选择 **Back (返回)**，从而返回到之前的页面进行更改。

   查看信息后，选择 **Finish (完成)**，结束创建爬网程序。

## 步骤 2：运行爬网程序
<a name="tutorial-add-crawler-step2"></a>

创建爬网程序后，向导会将您引导至爬网程序视图页面。由于您使用按需计划创建爬网程序，因此将为您提供运行爬网程序的选项。

**要运行爬网程序**

1. 此页面顶部附近的横幅会告知您爬网程序已完成创建，并询问您是否要立即运行。选择 **Run it now? (现在运行它？)** 来运行爬网程序。

   该横幅更改为显示爬网程序的“尝试运行”和“正在运行”消息。爬完程序开始运行后，横幅消失，爬网程序显示更新，以显示启动状态。一分钟后，您可以单击 Refresh (刷新) 图标来更新表中显示的爬网程序的状态。

1. 爬网程序完成后，将出现一条描述爬网程序所做更改的新横幅。您可以选择 **test-flights-db** 链接来查看数据目录对象。

## 步骤 3：查看 AWS Glue Data Catalog 对象
<a name="tutorial-add-crawler-step3"></a>

爬网程序在源位置读取数据并在数据目录中创建表。表是代表您的数据及其架构的元数据定义。数据目录中的表不包含数据。相反，您可以使用这些表作为任务定义中的源或目标。

**要查看爬网程序创建的数据目录对象**

1. 在左侧导航窗格中的 **Data catalog (数据目录)** 下方，选择 **Databases (数据库)**。在这里，您可以查看爬网程序创建的 `flights-db` 数据库。

1. 在左侧导航窗格的 **Data catalog (数据目录)** 以及 **Databases (数据库)** 下方，选择 **Tables (表)**。在这里，您可以查看爬网程序创建的 `flightscsv` 表。如果您选择表名称，则可以查看表设置、参数和属性。在此视图中向下滚动，您可以查看关于表的列和数据类型信息的架构。

1. 如果在表视图页面上选择 **View partitions (查看分区)**，您可以看到为数据创建的分区。第一列将作为分区键。