Amazon S3 インクルードパスごとに 1 つのスキーマを作成する - AWS Glue

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

Amazon S3 インクルードパスごとに 1 つのスキーマを作成する

デフォルトでは、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/ を使用してクローラーを定義するとします。クローラーを実行すると、次の特性を持つ 2 つのJSONファイルが検出されます。

  • ファイル 1S3://bucket/table1/year=2017/data1.json

  • ファイルのコンテンツ{“A”: 1, “B”: 2}

  • スキーマA:int, B:int

  • ファイル 2S3://bucket/table1/year=2018/data2.json

  • ファイルのコンテンツ{“C”: 3, “D”: 4}

  • スキーマC: int, D: int

デフォルトでは、スキーマの類似性が十分ではないため、クローラーは year_2017 および year_2018 という 2 つのテーブルを作成します。ただし、オプション [Create a single schema for each S3 path (各 S3 パスの単一のスキーマを作成する)] を選択し、データに互換性がある場合、クローラーは 1 つのテーブルを作成します。テーブルにはスキーマ A:int,B:int,C:int,D:intpartitionKey year:string があります。