

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為每個 Amazon S3 包含路徑建立單一結構描述
<a name="crawler-grouping-policy"></a>

依預設，爬蟲程式為 Amazon S3 中存放的資料定義資料表時，其會同時考量資料是否相容與結構描述是否類似。考量的資料相容性因素包括資料是否具有相同的格式類型 (例如 JSON)、相同的壓縮類型 (例如 GZIP)、Amazon S3 路徑結構及其他資料屬性。結構描述相似性是測量個別 Amazon S3 物件的結構描述相似程度。

為協助說明此選項，我們假設您使用了包含路徑 `s3://amzn-s3-demo-bucket/table1/` 來定義爬蟲程式。當爬蟲程式執行時，它會尋找兩個具備以下特點的 JSON 檔案：
+ **檔案 1** - `S3://amzn-s3-demo-bucket/table1/year=2017/data1.json`
+ *檔案內容* - `{“A”: 1, “B”: 2}`
+ *結構描述* - `A:int, B:int`
+ **檔案 2** - `S3://amzn-s3-demo-bucket/table1/year=2018/data2.json`
+ *檔案內容* - `{“C”: 3, “D”: 4}`
+ *結構描述* - `C: int, D: int`

依預設，由於結構描述的沒有足夠相似性，故爬蟲程式會建立兩個資料表，名為 `year_2017` 和 `year_2018`。不過，如果已選擇 **Create a single schema for each S3 path (為每個 S3 路徑建立單一結構描述)**，且如果該資料相容，爬蟲程式會建立一個資料表。該資料表包含結構描述 `A:int,B:int,C:int,D:int` 和 `partitionKey` `year:string`。

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

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台。

1. 選擇 **Data Catalog** 下的**編目程式**。

1. 當您設定新的編目程式時，在**輸出和排程**下，選取「進階」選項下的**為每個 S3 路徑建立單一結構描述**選項。

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

當可能時，您可以設定爬蟲程式為 `CombineCompatibleSchemas` 到常用資料表定義。使用此選項，爬蟲程式仍會考慮資料相容性，但在評估特定包含路徑的 Amazon S3 物件時，會忽略特定結構描述的相似性。

當您使用 設定爬蟲程式時 AWS CLI，請設定下列組態選項：

```
aws glue update-crawler \
   --name myCrawler \
   --configuration '{"Version": 1.0, "Grouping": {"TableGroupingPolicy": "CombineCompatibleSchemas" }}'
```

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

當您使用 API 設定爬蟲程式時，請設定下列組態選項：

 在爬蟲程式 API 中，以呈現以下 JSON 物件的字串設定 `Configuration` 欄位，例如：

```
{
   "Version": 1.0,
   "Grouping": {
      "TableGroupingPolicy": "CombineCompatibleSchemas" }
}
```

------