hive分割槽表增加字段新增字段值為空的bug

2021-09-26 18:54:59 字數 625 閱讀 8947

目錄

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 然後有兩...