hive數據倉庫新增字段方法
新增字段
1、方法1
alter table 表名 add columns (列名 string COMMENT '新添加的列') CASCADE; alter table 表名 add columns (列名 string COMMENT '新添加的列'); hive表中指定位置增加一個字段 分兩步,先添加字段到最後(add columns),然後再移動到指定位置(change) alter table 表名 add columns (列名 string comment '當前時間'); -- 正確,添加在最後 alter table 表名 change 列名 string after 指定位置的列名; -- 正確,移動到指定位置,address字段的後面
添加之後字段由於hive底層是文件和系列化的設計,因此查數據會發現新增的列在所有已有列的後面
CASCADE會刷歷史分區字段
cascade知識
- cascade的中文翻譯為“級聯”,也就是不僅變更新分區的表結構(metadata),同時也變更舊分區的表結構。
- 對於刪除操作也是,級聯刪除表中的信息,當表A中的字段引用瞭表B中的字段時,一旦刪除B中該字段的信息,表A的信息也自動刪除。(當父表的信息刪除,子表的信息也自動刪除)
- 標準語法如下:
2、方法2 (適用於外部表)
當分區過多的情況下,直接使用alter就行增加字段會報錯
第一步:刪除分區 ,當分區過多可以寫個for循環
alter table table_name drop if exists partition(par_col=col_name)
第二步:使用alter操作就行添加字段,這時候就不會因為分區過多報錯
第三步:進行修復分區
msck repair table 表名;
3、方法3(下下策)
創建新表修改表名,進行存儲原表數據
將原表進行drop,再對新表進行改名操作
ALTER TABLE old_name RENAME TO new_name;
修改字段
alter table table_name change column 已有列 修改名稱 類型 comment '';
刪除列
Hive不能直接刪除列,不然底層系列化就亂瞭,我們可以通過replace語句來替換整張表的字段,達到同樣的效果
alter table table_name replace columns(column_1 string);
語句中隻寫想要保留的字段就可以
以上就是hive中新增字段方法的詳細內容,更多關於hive新增字段的資料請關註WalkonNet其它相關文章!