Athena クエリが「HIVE_PARTITION_SCHEMA_MISMATCH」というエラーで失敗するのはなぜですか?

最終更新日: 2021 年 4 月 9 日

パーティションテーブルで Amazon Athena クエリを実行すると、クエリはエラー「HIVE_PARTITION_SCHEMA_MISMATCH」を受け取って失敗します。

簡単な説明

Athena パーティションテーブルに対してクエリを実行すると、Athena は AWS Glue データカタログ内のテーブルスキーマとそのパーティションのスキーマを検証します。検証では、列のデータ型を順番に比較し、列のデータ型が重複する列と一致することを確認します。通常、新しいパーティションは、関連付けられたテーブルのスキーマを継承します。ただし、シナリオによっては、スキーマが時間の経過とともに変化する場合があります。パーティションスキーマの列のデータ型がテーブルスキーマの対応する列のデータ型と一致しない場合、クエリはエラー「HIVE_PARTITION_SCHEMA_MISMATCH」で失敗します。

このエラーは、次のいずれかの方法で解決できます。

  • AWS Glue クローラーを使用してテーブルを作成した場合は、パーティションスキーマを更新するように AWS Glue クローラーを設定します。
  • テーブルを手動で作成した場合は、Athena データ定義言語 (DDL) ステートメントを使用して、影響を受けるパーティションを削除し、パーティションを再作成します。

解決方法

パーティションスキーマを更新するように AWS Glue クローラーを設定する

  1. AWS Glue コンソールを開きます。
  2. ナビゲーションペインで、[クローラ] を選択します。
  3. 設定するクローラを選択します。
  4. [アクション] を選択し、[クローラの編集] をクリックします。
  5. [クローラの出力を選択] ページに移動するまで [次へ] を選択します。
  6. [設定オプション] を展開します。
  7. [すべての新規および既存のパーティションをテーブルからのメタデータで更新します] を選択します。
  8. [次へ] をクリックし、[完了] を選択してクローラの設定を保存します。
  9. [クローラ] ページで、編集したクローラを選択します。
  10. [クローラの実行] を選択します。クローラを実行すると、パーティションはテーブルスキーマを継承します。

Athena DDL ステートメントを使用して、影響を受けるパーティションを削除し、削除されたパーティションを再作成します。

  1. Amazon Athena コンソールを開きます。
  2. [クエリエディタ] タブで、ALTER TABLE DROP PARTITION コマンドを実行して、影響を受けるパーティションを削除します。
  3. ALTER TABLE ADD PARTITION コマンドを実行して、削除されたパーティションを再作成します。
    注: テーブルで HIVE 互換パーティションを使用している場合は、MSCK REPAIR TABLE コマンドを実行して、削除されたパーティションを再作成できます。