為每個 Amazon S3 包含路徑建立單一結構描述 - AWS Glue

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

為每個 Amazon S3 包含路徑建立單一結構描述

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

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

如果您正在主控台設定爬蟲程式,若要結合結構描述,請選擇爬蟲程式選項 Create a single schema for each S3 path (為每個 S3 路徑建立一個單一結構描述)

使用設定爬行者程式時API,請設定下列組態選項:

  • 在爬行者程式中,以下列JSON物件的字串表示來設定Configuration欄位API;例如:

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

為協助說明此選項,我們假設您使用了包含路徑 s3://bucket/table1/ 來定義爬蟲程式。當爬行者程式執行時,會找到兩個具有下列特性的JSON檔案:

  • 檔案 1 - S3://bucket/table1/year=2017/data1.json

  • 檔案內容 - {“A”: 1, “B”: 2}

  • 結構描述 - A:int, B:int

  • 檔案 2 - S3://bucket/table1/year=2018/data2.json

  • 檔案內容 - {“C”: 3, “D”: 4}

  • 結構描述 - C: int, D: int

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