Hive 删除一个字段

简介: 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)信息将无法正常更新,可能会出现访问历史分区时莫名的报错。


相关文章
|
5月前
|
SQL 数据采集 存储
Hive 判断某个字段长度
【8月更文挑战第13天】
|
6月前
|
SQL DataWorks 监控
DataWorks产品使用合集之同步数据到Hive时,如何使用业务字段作为分区键
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
7月前
|
SQL 分布式计算 大数据
MaxCompute产品使用合集之启用hive兼容的时候,某个字段是null,是否会把这个字段当成空白连起来
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
8月前
|
SQL 分布式计算 关系型数据库
使用 Spark 抽取 MySQL 数据到 Hive 时某列字段值出现异常(字段错位)
在 MySQL 的 `order_info` 表中,包含 `order_id` 等5个字段,主要存储订单信息。执行按 `create_time` 降序的查询,显示了部分结果。在 Hive 中复制此表结构时,所有字段除 `order_id` 外设为 `string` 类型,并添加了 `etl_date` 分区字段。然而,由于使用逗号作为字段分隔符,当 `address` 字段含逗号时,数据写入 Hive 出现错位,导致 `create_time` 值变为中文字符串。问题解决方法包括更换字段分隔符或使用 Hive 默认分隔符 `\u0001`。此案例提醒在建表时需谨慎选择字段分隔符。
158 6
|
8月前
|
SQL Serverless HIVE
Hive 求多个字段的中位数(按行求中位数)
在项目中遇到按行求中位数的Hive需求,本文通过创建测试数据,展示解决方案。首先使用`lateral view`和`explode`将多字段行转为列,然后通过`percentile`函数计算每行数据的中位数,最终得到结果。该方法适用于将行转为列处理复杂需求,欢迎探讨更优解。
145 4
|
SQL 文件存储 数据库
Hive分区表的新增字段数据为null的问题解决方法
Hive分区表的新增字段数据为null的问题解决方法
363 0
|
SQL 分布式计算 运维
【大数据开发运维解决方案】sqoop增量导入oracle/mysql数据到hive时时间字段为null处理
前面几篇文章详细介绍了sqoop全量增量导入数据到hive,大家可以看到我导入的数据如果有时间字段的话我都是在hive指定成了string类型,虽然这样可以处理掉时间字段在hive为空的问题,但是在kylin创建增量cube时需要指定一个时间字段来做增量,所以上面那种方式不行,这里的处理方式为把string改成timestamp类型,看实验:
【大数据开发运维解决方案】sqoop增量导入oracle/mysql数据到hive时时间字段为null处理
|
SQL HIVE
Hdfs 导入Hive,时间相关的字段 导入后为NULL
Hdfs 导入Hive,时间相关的字段 导入后为NULL
122 0
|
SQL HIVE
hive创建表并指定字段分隔符
hive创建表并指定字段分隔符
|
SQL 分布式计算 关系型数据库
使用Spark 编码 写入 hive 的过程中 hive字段乱码 [解决方案]
由于元数据中的表结构中包含中文,我在抽取到spark过程中已经解决了一次乱码问题,具体显示为问题????,解决方法是在mysql连接上加参数 spark 字段乱码
504 0