Hive 删除一个字段

        看到这个标题,是不是眼睛一亮,心想hive也能用一行语法删除一个字段或者批量删除了?就像新增一个字段一样。(此时新增字段内心:加我容易,删我难~~)

  • hive 表增加一个字段:
alter table table_name[注:表名] add columns (column[注:字段名] string[注:字段类型] comment ‘XXXX’[注:字段注释]) cascade;

           答案是:当然不能!!!

        hive是不支持alter table table_name drop columns这种语法的

        不过假如你也像我一样手欠乱改leader的表不小心加错了一个字段,又不想删表重新再建,怎么办?

        关键字replace帮助你

语法:

--如果想删除最后一个字段column_2
create table table_name (
column_1 string,
column_2 int);

--删除column_2
alter table table_name replace columns(
column_1 string) cascade;    --column_2不写,即删除column_2,保留column_1

特别注意:这个语法不是删除哪个字段写哪个字段,而是写表中所有字段除了被删除的那个。

(因为我一激动只写了要删的字段,最后表中就只保留了要被删的)

        可能有人要问,这和重新键表有什么区别,我只能说,删表建表还是要比这种方式多写几行代码吖,而且有一定的风险。对我而言就是不想被发现,哈哈哈。。。。

补充一个小知识点:

问:为什么hive表在增删改的时候要加上cascade这个关键字呢?

答:CASCADE会刷历史分区字段。

说明:

  • 因为hive表大部分是分区表,而加上cascade【注:中文翻译为“级联”】关键字,不仅会变更新分区的表结构(metadata),同时也会变更旧分区的表结构。
  • 当使用级联删除表中信息时,如果A表中的字段引用了B表中的字段,删除B表中字段信息,相应的A表也会删除。(当父表的信息删除,子表的信息也自动删除)

对于分区表,在增删改时,一定要加上cascade,否则其历史分区的元数据(metadata)信息将无法正常更新,可能会出现访问历史分区时莫名的报错。


一个写技术博客的小小目标:

        开心写作,愿所有的技术点都可以用大白话表达出来,从此没有难理解的技术


  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醪糟小丸子

小小帮助,不足挂齿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值