スキップしてコンテンツを表示

AWS Glue クローラーにより、テーブルに新しいパーティションが追加されない原因を教えてください。

所要時間1分
0

AWS Glue クローラーにより、テーブルに新しいパーティションが追加されません。

簡単な説明

AWS Glue は、Amazon Simple Storage Service (Amazon S3) パス内のパーティションの名前、シーケンス、または数に差異がある場合、パーティションスキーマまたは構造が変更されたと見なします。クローラーは、新しいパーティションのソースデータファイルをスキャンし、ソースファイルの次の属性を既存のテーブルの属性と比較します。

  • ファイル形式
  • 圧縮タイプ
  • スキーマ
  • Amazon S3 パーティションの構造

これらのパーティション属性のいずれかがテーブルの属性と異なる場合、AWS Glue はそのパーティションをスキップし、メタデータを更新しません。

解決策

問題のトラブルシューティング

クローラーログを確認して問題を特定するには、次の手順を実行します。

  1. AWS Glue コンソールを開きます。
  2. ナビゲーションペインで [クローラー] を選択します。
  3. クローラーを選択し、[ログ] を選択すると、Amazon CloudWatch コンソールにログが表示されます。
  4. ログを参照し、クローラーが新しいパーティションをスキップしたかどうかを確認します。

たとえば、ログに次のようなエントリが含まれている場合、

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 クローラーの実行中、複数のテーブルが作成されないようにする方法を教えてください」を参照してください。

AWS公式更新しました 6ヶ月前