AWS Glue クローラーがテーブルに新しいパーティションを追加しません。
簡単な説明
クローラーが新しいパーティションでソースデータファイルをスキャンすると、クローラーはソースファイルの次の属性を既存のテーブルの属性と比較します。
- ファイル形式
- 圧縮タイプ
- スキーマ
- Amazon Simple Storage Service (Amazon S3) パーティションの構造
パーティションのこれらの属性のいずれかがテーブルの属性と異なる場合、パーティションはスキップされ、メタデータには追加されません。Amazon S3 パス内のパーティションの名前、シーケンス、または数の違いは、パーティションスキーマまたは構造の変更と見なされます。
解決方法
問題をトラブルシューティングする
クローラーログをチェックして、問題を特定します。
- [AWS Glue コンソール] を開きます。
- ナビゲーションペインで、[クローラー] を選択します。
- クローラーを選択してから [Logs] (ログ) リンクを選択して、CloudWatch コンソールでログを表示します。
- ログを確認して、クローラーが新しいパーティションをスキップしたかどうかを確認します。
例えば、ログにエントリが含まれているとすると、次のようになります。
Folder partition keys do not match table partition keys, skipped folder: doc-example-bucket/doc-example-path/doc-example-table/year=2021/month=01/sday=05/
このエントリは、Amazon S3 ロケーションのパーティション構造が、テーブルで定義されたパーティションキーと一致しないことを示します。これは、テーブルソースのロケーション全体でパーティション構造が一貫していない場合に発生する可能性があります。
AWS Glue クローラーが複数のテーブルを作成する場合、ログエントリは次のようになります。
INFO : Created table doc-example-table in database doxtest_db
類似したログが表示される場合は、これらのテーブルのロケーションのスキーマとパーティション構造を元のテーブルのロケーションのものと比較します。
問題を解決する
CloudWatch ログの情報に基づいて、次のソリューションオプションの 1 つまたは複数を検討してください。
- 一貫していないパーティション構造が原因で問題が発生する場合は、S3 パスの名前を手動またはプログラム的に変更して、構造の一貫性を保ちます。
- ファイル形式、圧縮形式、またはスキーマの不一致によってパーティションがスキップされ、データを目的のテーブルに含める必要がない場合は、次の点を考慮してください。
- 除外パターンを使用して、不要なファイルをスキップします。
- 不要なファイルを別のロケーションに移動します。
- データのいくつかの入力ファイルで異なるスキーマがあり、他の入力ファイルに類似したスキーマがある場合は、クローラーを作成するときに、互換性のあるスキーマを組み合わせます。[Configure the crawler's output] (クローラーの出力を設定) のページの [Grouping behavior for S3 data (optional)] (S3 データのグループ化動作 (オプション)) で、[Create a single schema for each S3 path] (S3 パスごとに単一のスキーマを作成する) を選択します。この設定がオンになっていて、データに互換性がある場合、クローラーは、指定されたインクルードパス内の S3 オブジェクトを評価するときに、特定のスキーマの類似性を無視します。詳細については、Amazon S3 インクルードパスごとに単一のスキーマを作成する方法を参照してください。
- クローラーが複数のテーブルを作成している場合は、「AWS Glue クローラーが複数のテーブルを作成しないようにするにはどうすればよいですか?」を参照してください。