Hive 表字段数据修改

hive字段信息修改

修改表注释

ALTER TABLE table1 SET TBLPROPERTIES('comment' = '每日背书企业成交明细(去重)');

增加字段

alter table table1 add columns(bonus varchar(255) comment '奖金');

alter table table1 add columns(bonus varchar(255) comment '奖金') cascade; -- 适用于分区表

联级机制cascade

  • cascade (适用于分区表)

出现场景:
在真实的业务中,我们会通过增加字段来解决一些表结构问题,如果我们使用增加字段信息语句进行字段增加,针对新分区表而言,后续更新数据的时候,可以直接更新完毕,但是对于老分区内数据而言默认是NULL,就算我们此时再次更新旧分区内的数据时,也无法将null值变成真实数据,则需要在我们添加字段的时候,在sql末尾添加cascade来启动联级机制,执行完毕后,老分区的内的数据就可以进行更新操作。

移动字段

set hive.metastore.disallow.incompatible.col.type.changes=false; -- 忽略字段类型
alter table table1 CHANGE column bonus bonus int comment '奖金' after create_time;

修改字段信息

alter table table1 CHANGE COLUMN rpt_tag rpt_tag int comment '1新客,2新转老,3新注册,5老客';

删除字段

-- 删除字段的时候,就是不显示需要删除的字段信息,显示保留字段信息
ALTER TABLE test REPLACE COLUMNS(id BIGINT, name STRING); 

hive修改文件路径

内部表

-- 设置新路径
alter table tb_table1 set location 'hdfs://cluster/hive/warehouse/test.db/tb_table2'
-- 移动文件
dfs -mv /hive/warehouse/test.db/tb_table1 /hive/warehouse/test.db/tb_table2

外部表

-- 删除外部表,创建新表并修改路径
drop table tb_table1;
create EXTERNAL table table1 (....) location '/hive/warehouse/test2.db/table1'
-- 移动路径
dfs -mv /hive/warehouse/test1.db/tb_table1 /hive/warehouse/test2.db/tb_table1
-- 恢复元数据
MSCK REPAIR TABLE table1;
-- 删除多余分区数据
ALTER TABLE table1 DROP IF EXISTS PARTITION (dt<='2022-03-08');

hive内部表与外部表之间的转换

-- 内部转外部
alter table tableA set TBLPROPERTIES('EXTERNAL'='true')
-- 外部转内部
alter table tableA set TBLPROPERTIES('EXTERNAL'='false')
-- 验证
describe extended tableA
-- tableType:EXTERNAL_TABLE

hive参数

  • -e :直接执行的是SQL
  • -f :执行的是SQL文件

你可能感兴趣的:(数仓,hive,数据仓库)