Hive 1.1.0分區表新增字段後,數據爲空的解決辦法

如果使用alter table add column語句對分區表增加字段時沒有使用cascade關鍵字,會導致Hive只維護了表的元數據,而沒有分區的元數據。

現象就是,重新insert overwrite了歷史有數據的分區,但是select 新增字段仍然沒有數據。

起初,我以爲是BUG,但是查看了官方文檔發現並不是BUG。

官方文檔描述如下:

The CASCADE|RESTRICT clause is available in Hive 1.1.0. ALTER TABLE ADD|REPLACE COLUMNS with CASCADE command changes the columns of a table's metadata, and cascades the same change to all the partition metadata. RESTRICT is the default, limiting column changes only to table metadata.

如上所述,在1.1.0中表和分區的元數據就是分開處理的,在增加字段的時候添加CASCADE能同時更新表和分區 對於,在添加字段的時候沒有指定的cascade的情況,

可以手動使用如下命令來對分區添加 alter table 表名 partition(dt='2019-04-26') add columns(字段名 類型);

然後重新查詢就新增字段就會有數據了。

注意:對於執行了add column語句之後新生成的分區,是不會有問題的,Hive會自動維護新分區中的元數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章