AWS Glue クローラーにより、テーブルに新しいパーティションが追加されません。
簡単な説明
AWS Glue は、Amazon Simple Storage Service (Amazon S3) パス内のパーティションの名前、シーケンス、または数に差異がある場合、パーティションスキーマまたは構造が変更されたと見なします。クローラーは、新しいパーティションのソースデータファイルをスキャンし、ソースファイルの次の属性を既存のテーブルの属性と比較します。
- ファイル形式
- 圧縮タイプ
- スキーマ
- Amazon S3 パーティションの構造
これらのパーティション属性のいずれかがテーブルの属性と異なる場合、AWS Glue はそのパーティションをスキップし、メタデータを更新しません。
解決策
問題のトラブルシューティング
クローラーログを確認して問題を特定するには、次の手順を実行します。
- AWS Glue コンソールを開きます。
- ナビゲーションペインで [クローラー] を選択します。
- クローラーを選択し、[ログ] を選択すると、Amazon 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
類似したログが表示される場合は、これらのテーブルの場所のスキーマとパーティション構造を元のテーブルと比較します。
問題を解決する
パーティション構造を更新する
パーティション構造の不一致が問題の原因である場合は、手動またはプログラムで構造の名前を変更し、一貫性を確保します。
特定のファイルを除外する
AWS Glue は、次のいずれかの要因でパーティションをスキップする場合があります。
AWS Glue が次のいずれかの原因でパーティションをスキップし、テーブルにそのデータが必要ない場合は、次のいずれかの手順を実行します。
- 除外パターンを使用して、不要なファイルをスキップします。詳細については、「データソースと分類子を選択する」を参照してください。
- 不要なファイルを別の場所に移動します。
互換性のあるスキーマを結合する
データにおいて、別々の入力ファイルに同様のスキーマがある場合は、クローラーの作成時に互換性のあるスキーマを組み合わせます。[クローラーの出力設定] ページの [S3 データのグループ化動作 (オプション)] で [S3 パスごとに単一のスキーマを作成する] を選択します。この設定を有効にした後、データに互換性がある場合は、クローラーは指定されたパスにおいて、S3 オブジェクトの特定のスキーマの類似性を無視します。詳細については、「Amazon S3 インクルードパスごとに単一のスキーマを作成する」を参照してください。
複数のテーブルが作成されないようにする
クローラーが複数のテーブルを作成している場合は、「AWS Glue クローラーの実行中、複数のテーブルが作成されないようにする方法を教えてください」を参照してください。