新しいパーティションを追加したが、Athena クエリで結果が返されない理由を教えてください。

所要時間1分
0

Amazon Athena クエリに新しいパーティションを追加しましたが、クエリで結果が返されません。

解決方法

この問題は、次のいずれかの方法で新しいパーティションを追加した場合に発生する可能性があります。

問題を解決するには、ユースケースに合わせて次の手順を実行してください。

MSCK REPAIR TABLE

MSCK REPAIR TABLE コマンドは、データパスに等号で接続されたキー値のペアを含むハイブスタイルのパーティションでのみ機能します。(例: country=us/..., year=2021/month=01/day=26/...)

また、特に Amazon Simple Storage Service (Amazon S3) バケットに大きなパーティションがある場合、MSCK REPAIR TABLE コマンドは新しいパーティションの追加に失敗することがあります。** MSCK REPAIR TABLE ** コマンドはデータ範囲内のすべてのパーティションをロードするため、パフォーマンスやタイムアウトの問題が発生する場合もあります。たとえば、既存のデータが 2020 年のもので、新しいパーティションのデータが 2023 年のものである場合、2020 年のすべてのパーティションが読み取られます。

Hive スタイル以外のパーティションを追加するには、次に示すように ALTER TABLE ADD PARTITION コマンドを実行します。

ALTER TABLE table_name ADD [IF NOT EXISTS]
  PARTITION
  (partition_col1_name = partition_col1_value
  [,partition_col2_name = partition_col2_value]
  [,...])
  [LOCATION 'location1']
  [PARTITION
  (partition_colA_name = partition_colA_value
  [,partition_colB_name = partition_colB_value
  [,...])]
  [LOCATION 'location2']
  [,...]

パーティションプロジェクション

パーティションプロジェクションでは、テーブルの作成時にテーブルプロパティが定義されます。テーブルのプロパティが必要な仕様を満たしていることを確認してください。満たしていないと、パーティションが読み取られない可能性があります。

次のコマンドを使用してテーブルパーティションを一覧表示します。

"SELECT * FROM 'table_name$partitions'"

出力で、パーティションのデータ形式を確認します。年、月、日、時間などの日付形式を使用する場合は、範囲、間隔、数字に必要なテーブルプロパティを追加します。

詳細については、「パーティションプロジェクションでサポートされるタイプ」を参照してください。

AWS Glue データカタログまたは AWS Glue コンソール

Data Catalog または AWS Glue コンソールを使用してパーティション列を定義した場合は、パーティションのデータ型を確認してください。パーティションのデータ型は、S3 バケットで定義されているデータ型と一致する必要があります。

注: Data Catalog または AWS Glue コンソールと S3 バケットでは、一貫したデータ型を使用することがベストプラクティスです。

関連情報

MSCK REPAIR TABLE クエリで AWS Glue データカタログにパーティションが追加されない理由を教えてください

Amazon Athena テーブルをクエリするとレコードがゼロになる理由を教えてください

AWS公式
AWS公式更新しました 1年前