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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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

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

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

groupFiles

Amazon S3 データパーティションにあるファイルのグループ化を有効にするには、groupFilesinPartition を設定します。入力ファイル数が 50,000 を超える場合には、次の例のように AWS Glue がグループ化を自動的に有効にします。

'groupFiles': 'inPartition'
groupSize

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

たとえば、次の例では、グループサイズを 1 MB に設定します。

'groupSize': '1048576'

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

recurse

recurseTrueを設定し、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 ではサポートされていません。