0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Athenaでデータを取得しようとしたらパーティションスキーマーエラ「HIVE_PARTITION_SCHEMA_MISMATC」がでた

Last updated at Posted at 2024-07-04

問題

タイトルの通りAWSのAthenaでデータを取得しようとしたら下記のエラーが発生。

HIVE_PARTITION_SCHEMA_MISMATCH: There is a mismatch between the table and partition schemas. The types are incompatible and cannot be coerced. The column 'col1' in table 'database_name.table_name' is declared as type 'bigint', but partition 'partition1=aaa/partition2=bbb' declared column 'col1' as type 'struct<long:bigint,string:string>'.

テーブルのスキーマのパーティションのスキーマが一致しないとエラーが出ていました。
csvファイルのcol1列が文字列の時と数値の時があったため今回の問題が起きました。
データを入れなおしてCrawlerを実行すれば直ると思っていましたがエラーが出たままでした。

解決策

正しい形式でデータを上書きしているのであればパーティションを一度消して再生成すれば直る。

-- パーティションを削除
ALTER TABLE table_name DROP PARTITION (partition1 = 'aaa', partition2 = 'bbb');

-- パーティションを再生成
MSCK REPAIR TABLE table_name;

おわりに

今回の問題が発生してはじめてパーティションごとにもスキーマを管理しているということを知りました。
テーブルでスキーマ管理しているのに何で必要なんでしょうか...
Glueに関しては、まだまだ分からないことばかりですが少しずつ理解を深めていければと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?