hive修改表名、列名、各种注释、增删列、属性、分区名、分区字段类型

hive 表总共分为四类,分别内部表、外部表、分区表、桶表

首先,未被external修饰的是内部表(managed table),被external修饰的为外部表(external table); 

区别: 

  • 内部表数据由Hive自身管理,外部表数据由HDFS管理; 
  • 内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定; 
  • 删除内部表会直接删除元数据(metadata)及存储数据;
  • 删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除; 
  • 对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)
1)修改表名:
alter table table_old_name rename to table_new_name

2)修改列名、列类型
ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name] [CASCADE|RESTRICT];

alter table table_name change column_new_name column_new_name column_new_type

--修改列名的同时,还可以修改注释,或者列的位置,[ ]之内均为可选项
alter table table_name change column_new_name column_new_name column_new_type [comment 'alter column name for test' ] [first | after  column_num]

3)增加列
alter table table_name add columns (column_new_name column_new_type [comment 'comment'])

4)更新列
alter table table_name replace columns (column_new_name new_type)

5)更改表的属性
alter table table_name set TBLPROPERTIES ('EXTERNAL'='TRUE')   --内部表转内部表
alter table table_name set TBLPROPERTIES ('EXTERNAL'='FALSE')  --外部表转内部表

分区操作

1)修改分区名
alter table table_name partition(dt='partition_old_name') rename to partition(dt='partition_new_name')

2)修改分区属性
alter table table_name partition column (dt partition_new_type)

3)修改分区位置
alter table table_name partition (createtime='20190301') set location "new_location"

4)添加分区
alter table table_name add partition (partition_name = 'value') location '***'
--示例
alter table table_name add IF NOT EXISTS partition (createtime='20190301') location '/user/hive/warehouse/testdw/js_nk_wn'

--还可以同时添加多个分区,只需要在后面继续追加就行
alter table table_name add partition (createtime='20190301') location '/user/hive/warehouse/dept_part' partition (createtime='20190228') location '/user/hive/warehouse/dept_part' 

5)删除分区
--删除一级分区
alter table table_name drop if exists partition(createtime='20190301')
--删除二级分区
alter table table_name drop if exists partition (month='02',day='12')

6)修改表的字节编码
alter table table_name set serdeproperties  ('serialization.encoding'='utf-8');



 

参考:

https://www.cnblogs.com/theseven/p/5148550.html

https://blog.csdn.net/weixin_41753664/article/details/88125969

  • 12
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hive中,如果要修改历史分区字段,可以使用ALTER TABLE语句结合CASCADE选项来实现。默认情况下,新增字段时,只会修改元数据,不会对历史分区生效。为了对历史分区生效,需要增加CASCADE选项。这样只会对历史分区字段进行修改,而对新建分区没有影响。具体操作可以参考以下示例: ``` ALTER TABLE table_name REPLACE COLUMNS (col_name data_type \[COMMENT col_comment\], ...) CASCADE; ``` 其中,table_name是要修改表名,col_name是要修改字段,data_type是字段的数据类型,col_comment是字段注释。通过使用CASCADE选项,可以确保修改字段对历史分区生效。\[1\] 另外,如果只是修改字段注释,也可以使用ALTER TABLE语句结合CHANGE关键字来实现。例如,将table1的字段useid修改为user,可以使用以下语句: ``` ALTER TABLE table1 CHANGE useid user string COMMENT '用户ID'; ``` 这样就将字段修改为user,并添加了注释。\[2\] 总结起来,要在Hive修改历史分区字段,可以使用ALTER TABLE语句结合CASCADE选项,或者使用ALTER TABLE语句结合CHANGE关键字。具体选择哪种方式取决于具体的需求。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [HIVE 增加修改删除字段](https://blog.csdn.net/m0_67266585/article/details/125176774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [hive常见的对表操作语句-修改表/字段、增字段、删分区、复制表等](https://blog.csdn.net/weixin_43631296/article/details/112794457)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值