

# 大きなグループの入力ファイルの読み取り
<a name="grouping-input-files"></a>

テーブルのプロパティを設定しておくと、Amazon S3 データストアからファイルが読み取られる際に、AWS Glue の ETL ジョブでそれらのファイルをグループ化させることができます。これらのプロパティを使用すると、各 ETL タスクでは入力ファイルのグループを単一のインメモリパーティションに読み取ることができます。これは、Amazon S3 データストアに多数の小さいファイルがある場合に便利です。特定のプロパティを定義する際には、Amazon S3 データパーティション内のファイルをグループ化し、そのグループの読み取り用のサイズを設定することを AWS Glue に指示します。また、`create_dynamic_frame.from_options` メソッドを使用した Amazon S3 データストアからの読み取りのために、これらのオプションを設定することもできます。

テーブルのファイルをグループ化するには、テーブル構造のパラメータフィールドにキーと値のペアを設定します。テーブルのパラメータフィールドに値を設定するには、JSON 表記を使用します。テーブルのプロパティを編集する詳しい方法については、「[テーブルの詳細の表示と管理](tables-described.md#console-tables-details)」を参照してください。

このメソッドを使用すると、Amazon S3 データストアにある Data Catalog でテーブルをグループ化できます。

**groupFiles**  
Amazon S3 データパーティションにあるファイルのグループ化を有効にするには、**groupFiles** に `inPartition` を設定します。入力ファイル数が 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** を設定する必要はありません。  

```
  '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` は、csv、Ion、grokLog、json、および xml のデータ形式から作成された DynamicFrames でサポートされています。このオプションは、avro、parquet、orc ではサポートされていません。