

# 阻止爬网程序更改现有架构
<a name="crawler-schema-changes-prevent"></a>

 您可以阻止 AWS Glue 爬网程序在运行时对 Data Catalog 进行任何架构更改。默认情况下，爬网程序会更新 Data Catalog 中的架构，使其与正在爬取的数据来源相匹配。但是，在某些情况下，您可能需要阻止爬网程序修改现有架构，尤其是在您已经转换或清理数据并且不希望原始架构覆盖更改的情况下。

 按照以下步骤将您的爬网程序配置为不覆盖表定义中的现有架构。

------
#### [  AWS 管理控制台  ]

1. 登录 AWS 管理控制台，然后打开 AWS Glue 控制台，网址为：[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)。

1. 在**数据目录**下选择**爬网程序**。

1. 从列表中选择一个爬网程序，然后选择**编辑**。

1. 选择**步骤 4，设置输出和计划**。

1. 在**高级选项**下，选择**仅添加新列**或**忽略更改，不更新 Data Catalog 中的表**。

1.  您还可以将配置选项设置为**使用表中的元数据更新所有新的和现有的分区**。这会将分区架构设置为从表继承。

1. 选择**更新**。

------
#### [ AWS CLI ]

以下示例说明如何将爬网程序配置为不更改现有架构，仅添加新列：

```
aws glue update-crawler \
  --name myCrawler \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
```

以下示例说明如何将爬网程序配置为不更改现有架构，且不添加新列：

```
aws glue update-crawler \
  --name myCrawler \
  --schema-change-policy UpdateBehavior=LOG \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }}}'
```

------
#### [ API ]

如果您不希望在爬网程序运行时更改表架构，请将架构更改策略设置为 `LOG`。

当您使用 API 配置爬网程序时，请设置以下参数：
+ 将 `SchemaChangePolicy` 结构中的 `UpdateBehavior` 字段设置为 `LOG`。
+  使用爬网程序 API 中的以下 JSON 对象的字符串表示形式设置 `Configuration` 字段；例如：

  ```
  {
     "Version": 1.0,
     "CrawlerOutput": {
        "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }
     }
  }
  ```

------