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文件