• Hive 删除一个字段


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

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

               答案是:当然不能!!!

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

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

            关键字replace帮助你

    语法:

    1. --如果想删除最后一个字段column_2
    2. create table table_name (
    3. column_1 string,
    4. column_2 int);
    5. --删除column_2
    6. alter table table_name replace columns(
    7. column_1 string) cascade; --column_2不写,即删除column_2,保留column_1

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

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

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

    补充一个小知识点:

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

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

    说明:

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

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


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

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


  • 相关阅读:
    电脑合并盘符
    Java继承 学习资料
    iCloud涨价不用慌!学会使用群晖生态将本地SSD“上云”
    PX4模块设计之二十三:自定义FlightTask
    优思学院|质量4.0与质量管理的未来
    【AAAI2022】Efficient Non-Local Contrastive Attention for Image Super-Resolution
    Java项目:基于JSP的幼儿园管理系统
    身临其境之谁是猎人
    【21t天算法挑战赛】排序算法——直接选择排序
    TCP编程(实现客户端给服务器端发送消息)
  • 原文地址:https://blog.csdn.net/laozaoxiaowanzi/article/details/126907248