AWS Glue
開発者ガイド

大きなグループの入力ファイルの読み取り

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

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

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

groupFiles

​Amazon S3 データパーティション内のファイルをグループ化するには、groupFiles​ を inPartition​ に設定します。AWS Glue​ では、入力ファイル数が 50,000 を超える場合、自動的にグループ化を有効にします。以下に例を示します。

'groupFiles': 'inPartition'
groupSize

groupSize をグループのターゲットサイズ (バイト単位) に設定します。groupSize プロパティはオプションです。指定しない場合、AWS Glue はクラスター内のすべての CPU コアを使用すると同時に、ETL タスクとメモリ内パーティションの総数を減らすようにサイズを計算します。

たとえば、グループサイズを 1 MB に設定する方法は次のとおりです。

'groupSize': '1048576'

groupsize​ は、計算の結果を使用して設定する必要があることに注意してください。例: 1024 * 1024 = 1048576。

recurse

paths をパスの配列として指定する場合は、[recurse] を True に設定して、すべてのサブディレクトリのファイルを再帰的に読み込みます。paths が Amazon S3 のオブジェクトキーの配列である場合は、[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")