目錄
最近在查hive版本問題,發現在hive1.1.0和hive1.2.1上,分區表新增字段後新增字段值爲空的情況。網上查了資料,提供了兩種解決辦法:
1.修改元數據
修改hive元數據SDS表的CD_ID字段,原因是修改表結構後,元數據庫中的SDS中該表對應的CD_ID會改變,但是該表分區下面對應的CD_ID還是原來表的CD_ID
2.刪除當前分區重建
這兩個辦法都不太適應,辦法1修改元數據庫風險大,辦法2可能會導致數據丟失。
3.更新指定分區的元數據
老大給的任務是其他辦法workaround。
通過測試發現如下規律,先給出結論:
在分區表裏增加字段後,向分區表插入數據有兩種情況:
1.分區在修改表結構前存在
2.分區在修改表結構前不存在
對於第二種情況,bug不存在
針對第一種情形,
執行alter table denglg add columns(c3 string); 查分區數據新增字段值爲空,
需再執行alter table denglg partition(step='1') add columns(c3 string);【假設當前只有step='1'的分區】