目錄
1.修改元資料
2.刪除當前分割槽重建
3.更新指定分割槽的元資料
最近在查hive版本問題,發現在hive1.1.0和hive1.2.1上,分割槽表新增欄位後新增字段值為空的情況。網上查了資料,提供了兩種解決辦法:
修改hive元資料sds表的cd_id欄位,原因是修改表結構後,元資料庫中的sds中該表對應的cd_id會改變,但是該錶分割槽下面對應的cd_id還是原來表的cd_id
這兩個辦法都不太適應,辦法1修改元資料庫風險大,辦法2可能會導致資料丟失。
老大給的任務是其他辦法workaround。
通過測試發現如下規律,先給出結論:
在分割槽表裡增加欄位後,向分割槽表插入資料有兩種情況:
1.分割槽在修改表結構前存在
2.分割槽在修改表結構前不存在
對於第二種情況,bug不存在
針對第一種情形,
執行alter table denglg add columns(c3 string); 查分割槽資料新增字段值為空,
需再執行alter table denglg partition(step='1') add columns(c3 string);【假設當前只有step='1'的分割槽】
hive分割槽表新增字段出現新增欄位null的bug
對於hive分割槽表,我們使用alter語句新增欄位後 如alter table table name add columns age int 再重寫之前已經存在的分割槽,會出現使用查詢語句查出來的新增字段顯示null值。例如 表a 分割槽dt,已有分割槽dt a 由於需求新增了乙個字段,然後重新寫...
Hive分割槽表增加字段新增字段值為空的bug
hive jira 最近在查hive版本問題,發現在hive1.1.0和hive1.2.1上,分割槽表新增欄位後新增字段值為空的情況。網上查了資料,提供了兩種解決辦法 1.修改hive元資料sds表的cd id欄位,原因是修改表結構後,元資料庫中的sds中該表對應的cd id會改變,但是該錶分割槽下...
Hive分割槽表新增欄位為null的bug及解決方法
解決方法 解決該問的關鍵是刪除舊分割槽,因為雖然hdfs上的資料更新了,但是我們查詢的時候仍然查詢的是舊的元資料資訊 即mysql中的資訊 在我們插入完資料之後,需要刪除元資料的舊分割槽 alter table table name drop partition pt d 20170101 然後有兩...