

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

# 讀取在大型群組中的輸入檔案
<a name="grouping-input-files"></a>

您可以設定資料表的屬性，來啟用 AWS Glue ETL 任務，以讓檔案從 Amazon S3 資料存放區進行讀取時進行分組。這些屬性可讓每個 ETL 任務將一組輸入檔案輸入到單一記憶體分割區，這在 Amazon S3 資料存放區中有大量小型檔案時特別有用。在您設定特定屬性時，您會指示 AWS Glue 以在 Amazon S3 資料分割區中分組檔案並設定要讀取的群組大小。您也可以在從 Amazon S3 資料存放區讀取時，使用 `create_dynamic_frame.from_options` 方法設定這些選項。

若要啟用資料表分組檔案，您須在資料表結構的參數欄位中設定金鑰值對。使用 JSON 符號來設定資料表的參數欄位值。關於編輯資料表屬性的詳細資訊，請參閱 [檢視與管理資料表詳細資訊](tables-described.md#console-tables-details)。

您可以使用此方法，以啟用在 Data Catalog 中與 Amazon S3 資料存放區的資料表群組。

**groupFiles**  
將 **groupFiles** 設為 `inPartition`，可將檔案分組在 Amazon S3 資料分割區中。如果超過 50,000 個輸入檔案，則 AWS Glue 會自動分組，如下例所示。  

```
  'groupFiles': 'inPartition'
```

**groupSize**  
將 **groupSize** 設定為群組目標大小 (以位元組為單位)。**groupSize** 屬性是選用的，如果沒有提供，AWS Glue 會計算在叢集中使用所有 CPU 核心的大小，同時仍降低 ETL 任務的總數與記憶體內分割區。  
例如，下列會將群組大小設定為 1 MB。  

```
  'groupSize': '1048576'
```
請注意，您應使用計算的結果來設定 `groupsize`。例如：1024 \$1 1024 = 1048576。

**recurse**  
將 **recurse (遞迴)** 設定為 `True` 以在指定 `paths` 作為路徑陣列時，遞迴讀取所有子目錄中的檔案。如果 `paths` 是 Amazon S3 中的物件金鑰陣列或輸入格式為 parquet/orc，則您不需要設定**遞迴**，如下列範例所示。  

```
  'recurse':True
```

如果您直接使用 `create_dynamic_frame.from_options` 方法從 Amazon S3 進行讀取，則新增這些連線選項。例如，以下會嘗試將檔案分組到 1 MB 群組。

```
df = glueContext.create_dynamic_frame.from_options("s3", {'paths': ["s3://s3path/"], 'recurse':True, 'groupFiles': 'inPartition', 'groupSize': '1048576'}, format="json")
```

**注意**  
`groupFiles`從以下資料格式建立的 DynamicFrames 支援：csv、ion、grokLog、json 和 xml。avro、parquet 和 orc 不支援此選項。