パーティションテーブルで Amazon Athena クエリを実行すると、クエリはエラー「HIVE_PARTITION_SCHEMA_MISMATCH」を受け取って失敗します。
簡単な説明
Athena パーティションテーブルに対してクエリを実行すると、Athena は AWS Glue データカタログ内のテーブルスキーマとそのパーティションのスキーマを検証します。検証では、列のデータ型を順番に比較し、列のデータ型が重複する列と一致することを確認します。通常、新しいパーティションは、関連付けられたテーブルのスキーマを継承します。ただし、シナリオによっては、スキーマが時間の経過とともに変化する場合があります。パーティションスキーマの列のデータ型がテーブルスキーマの対応する列のデータ型と一致しない場合、クエリはエラー「HIVE_PARTITION_SCHEMA_MISMATCH」で失敗します。
このエラーは、次のいずれかの方法で解決できます。
- AWS Glue クローラーを使用してテーブルを作成した場合は、パーティションスキーマを更新するように AWS Glue クローラーを設定します。
- テーブルを手動で作成した場合は、Athena データ定義言語 (DDL) ステートメントを使用して、影響を受けるパーティションを削除し、パーティションを再作成します。
解決方法
パーティションスキーマを更新するように AWS Glue クローラーを設定する
- AWS Glue コンソールを開きます。
- ナビゲーションペインで、[クローラ] を選択します。
- 設定するクローラを選択します。
- [アクション] を選択し、[クローラの編集] をクリックします。
- [クローラの出力を選択] ページに移動するまで [次へ] を選択します。
- [設定オプション] を展開します。
- [すべての新規および既存のパーティションをテーブルからのメタデータで更新します] を選択します。
- [次へ] をクリックし、[完了] を選択してクローラの設定を保存します。
- [クローラ] ページで、編集したクローラを選択します。
- [クローラの実行] を選択します。クローラを実行すると、パーティションはテーブルスキーマを継承します。
Athena DDL ステートメントを使用して、影響を受けるパーティションを削除し、削除されたパーティションを再作成します。
- Amazon Athena コンソールを開きます。
- [クエリエディタ] タブで、ALTER TABLE DROP PARTITION コマンドを実行して、影響を受けるパーティションを削除します。
- ALTER TABLE ADD PARTITION コマンドを実行して、削除されたパーティションを再作成します。
注: テーブルで HIVE 互換パーティションを使用している場合は、MSCK REPAIR TABLE コマンドを実行して、削除されたパーティションを再作成できます。
関連情報
パーティションスキーマを同期して「HIVE_PARTITION_SCHEMA_MISMATCH」を回避する
AWS Glue コンソールでのクローラー構成オプションの設定