原文:
最近工作中遇到乙個問題:
對於分割槽表新增字段,向已存在分割槽中插入資料,結果新增欄位的值全部為null。
注:是已存在分割槽,新的分割槽並不會產生該問題;無論是內部表還是外部表均有該問題。
在新增字段之後及時對錶進行msck repair table 仍然存在問題。
問題描述
hive版本:2.2.0
建立分割槽外部表test1
插入資料
檢視資料
新增新的字段name
可以通過alter add,也可以通過alter replace
再次檢視資料
修復表msck repair table test1;
向分割槽20170101插入資料
insert overwrite table test1 partition(pt_d='20170101') values(1,'1xiao'),(2,'1da');
檢視資料
解決方法
解決該問的關鍵是刪除舊分割槽,因為雖然hdfs上的資料更新了,但是我們查詢的時候仍然查詢的是舊的元資料資訊(即mysql中的資訊)
在我們插入完資料之後,需要刪除元資料的舊分割槽
alter table table_name drop partition (pt_d='20170101');
然後有兩種方式恢復資料
1.新增該分割槽
alter table table_name add partition(pt_d='20170101');
或者通過修復分割槽也可以
- 2.修復表結構
msck repair table table_name;
hive分割槽表新增字段出現新增欄位null的bug
對於hive分割槽表,我們使用alter語句新增欄位後 如alter table table name add columns age int 再重寫之前已經存在的分割槽,會出現使用查詢語句查出來的新增字段顯示null值。例如 表a 分割槽dt,已有分割槽dt a 由於需求新增了乙個字段,然後重新寫...
Hive分割槽表新增欄位為null的bug及解決方法
解決方法 解決該問的關鍵是刪除舊分割槽,因為雖然hdfs上的資料更新了,但是我們查詢的時候仍然查詢的是舊的元資料資訊 即mysql中的資訊 在我們插入完資料之後,需要刪除元資料的舊分割槽 alter table table name drop partition pt d 20170101 然後有兩...
hive分割槽表增加字段新增字段值為空的bug
目錄 1.修改元資料 2.刪除當前分割槽重建 3.更新指定分割槽的元資料 最近在查hive版本問題,發現在hive1.1.0和hive1.2.1上,分割槽表新增欄位後新增字段值為空的情況。網上查了資料,提供了兩種解決辦法 修改hive元資料sds表的cd id欄位,原因是修改表結構後,元資料庫中的s...