4.Hive表更新字段信息,一次讲明白

news2024/10/2 1:21:56

Hive表更新字段信息

  • 一、更新表字段语句
    • 1、修改字段名称
    • 2、修改字段类型
    • 3、修改字段备注
  • 二、总结

一、更新表字段语句

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];

修改Hive表字段的语句如上所示,从中可以看出该语句可以修改表或者分区的字段信息,修改内容包括字段的名称、数据类型、注释信息以及在表中的位置。工作中修改字段的名称、数据类型和注释信息比较常见,而修改字段在表中的顺序基本不会使用。因此,这里只演示字段的名称、数据类型和注释信息修改。
修改字段的语句只是更新元数据信息,而实际数据没有任何变化。
注意最后的可选参数[CASCADE|RESTRICT],默认是RESTRICT,表示修改语句只作用在表上,历史分区的字段信息不会同步更新(新分区的的字段信息和修改后表的字段信息保持一致,历史分区的字段据信息和修改前的表字段信息保持一致)。使用CASCADE会级联修改所有历史分区的字段信息。

1、修改字段名称

在修改字段名这一小节,演示了修改字段名时,加不加CASCADE的区别,修改字段类型和字段备注是同样的道理。在修改字段类型和字段备注时仅以不加CASCADE做演示。

  1. 创建数据库
CREATE DATABASE IF NOT EXISTS bi;

创建一个数据库
2.创建分区表

CREATE EXTERNAL TABLE IF NOT EXISTS bi.students
(
     name      STRING COMMENT '姓名'
) COMMENT '学生姓名'
PARTITIONED BY (pt VARCHAR(8) COMMENT '天分区')
;

创建一个分区表,方便演示CASCADE和RESTRICT的区别
3. 插入数据

INSERT OVERWRITE TABLE bi.students
PARTITION (pt = '20240123')
VALUES
('jack')
;

INSERT OVERWRITE TABLE bi.students
PARTITION (pt = '20240124')
VALUES
('rose')
;
  1. 查询数据
SELECT
     pt
    ,name
FROM bi.students
ORDER BY pt
;

表分区和数据

  1. 查看表结构
DESC bi.students;

表字段名
6. 查看pt = '20240123’分区字段名,可以看出此时表字段名和分区字段名是一致的。

DESC bi.students PARTITION(pt = '20240123');

分区字段名

  1. 修改字段名称(不加CASCADE)并查看表字段名和分区字段名,注意修改字段名称时需要指定字段类型
ALTER TABLE bi.students CHANGE COLUMN name user_name STRING;
DESC bi.students;

表的字段名已修改

DESC bi.students PARTITION(pt = '20240123');

历史分区的的字段名未修改
从上面的查询结果可以看出,不加CASCADE,历史分区字段名不会修改。
8. 往新分区插入数据,并查询新分区字段名

INSERT OVERWRITE TABLE bi.students
PARTITION (pt = '20240125')
VALUES
('mary')
;
DESC bi.students PARTITION(pt = '20240125');

新插入的分区和修改后的表字段名一致
从上面的结果可以看出,新建的分区字段名和修改后的字段名一致。
9. 这里再做一个试验,更新一次历史分区的数据,看历史分区的字段名是否改变

INSERT OVERWRITE TABLE bi.students
PARTITION (pt = '20240123')
VALUES
('jack')
;
DESC bi.students PARTITION(pt = '20240123');

重新插入数据,不会更新历史分区的字段名

从上的执行结果可以看出,重新插入数据,也不会更新历史分区的字段名。
10. 字段名修改回去,并查询表结构

ALTER TABLE bi.students CHANGE COLUMN user_name name STRING;
DESC bi.students;

将表字段名称修改回去

  1. 修改字段名称时加CASCADE,并查询表及历史分区字段名
ALTER TABLE bi.students CHANGE COLUMN name user_name STRING CASCADE;
DESC bi.students;

表字段名被修改

DESC bi.students PARTITION(pt = '20240123');

历史分区字段名也被修改
从上面的执行结果可以看出,修改字段名称时,加上CASCADE,可以修改表字段名和历史分区字段名。
12. 添加新分区,并查看字段名

INSERT OVERWRITE TABLE bi.students
PARTITION (pt = '20240126')
VALUES
('dacy')
;
DESC bi.students PARTITION(pt = '20240126');

新分区字段名和执行修改后的表名保持一致
从上面的查询结果可以看出,新分区的字段名和修改后的字段名一致。

2、修改字段类型

仍以上一小节的表为例。

  1. 查看表结构
DESC bi.students;

字段类型为STRING
2. 修改字段类型,并查看

ALTER TABLE bi.students CHANGE COLUMN user_name user_name VARCHAR(30);
DESC bi.students;

字段类型已修改

3、修改字段备注

  1. 查看表结构
DESC bi.students;

查看字段备注

  1. 修改字段备注,并查看
ALTER TABLE bi.students CHANGE COLUMN user_name user_name VARCHAR(30) COMMENT '用户姓名';
DESC bi.students;

字段备注已修改

二、总结

工作中修改Hive表字段信息是比较常见的操作,修改语句也比较简单,需要注意是否需要更新历史分区的字段信息。
如果需要修改历史分区的字段信息,可以在修改语句的最后加上CASCADE;还一种解决方法,删除历史分区,重新插入数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1413070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【医学图像数据增强】 EMIT-Diff:扩散模型 + 文本和结构引导,生成多样化且结构准确的医学图像

EMIT-Diff:扩散模型 医学图像生成 提出背景方法步骤优化目标如何将不同的条件输入(例如文本或边界框)整合到模型中?如何提高边缘检测的准确性,从而生成真实和有意义的医学图像?如何使用自动编码器架构和大…

python写一个彩票中奖小游戏修订版本

先说规则: print("下面介绍双色球颜色规则:")print("一等奖,投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖")print("二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖&q…

详解SpringCloud之远程方法调用神器Fegin

第1章:引言 咱们作为Java程序员,在微服务领域里,Spring Cloud可谓是个耳熟能详的大名。它提供了一套完整的微服务解决方案,其中就包括了服务间的通信。在这个微服务中,有一个成员特别引人注意,它就是Feign。 那Feign到底是什么呢?简单来说,Feign是一个声明式的Web服务…

Windows7关闭谷歌浏览器提示“若要接收后续 Google Chrome 更新,您需使用 Windows 10 或更高版本”的方法

背景 电脑比较老,系统一直没有更新,硬件和软件版本如下: 操作系统版本:Windows7 企业版 谷歌浏览器版本:109.0.5414.120(正式版本) (64 位) 该版本的谷歌浏览器是支持…

2023年CSDN年底总结-独立开源创作者第一年

2023年最大的变化,就是出来创业,当独立开源创作者,这一年发起SolidUI开源项目,把知乎重新开始运营起来。CSDN粉丝破万,CSDN博客专家和AI领域创作者。 2023年年度关键词:创业 https://github.com/CloudOrc…

c语言实现—动态通讯录

一.前言 上次带大家认识了一下顺序表,其实我们可以在顺序表的基础上实现一个通讯录的小项目,通讯录的本质仍然是顺序表,所以如果下面的代码你有问题的话,先去看看我的上篇文章哦~。 通讯录的功能大家应该都知道吧,这次…

记 Rxjava zip操作符遇到的问题

在项目中遇到了类似下面这样的代码 本意是希望当zip操作符中三个Observable执行完毕之后,将他们返回的数据统一进行处理 Observable.zip(startFirst(), startSecond(), startThird(),(first, second, third) -> {Log.i("Rxjava", "handle all dat…

鸿蒙开发(八)添加常用控件(下)

添加控件的文章分成了上下两篇,上篇介绍了文本显示、文本输入、按钮、图片、单选框、切换按钮这六种常用控件,本篇继续介绍其他几种很重要但略微复杂的控件。 鸿蒙系列上一篇: 鸿蒙开发(七)添加常用控件(…

网络安全防御保护实验(二)

一、登录进防火墙的web控制页面进行配置安全策略 登录到Web控制页面: 打开Web浏览器,输入防火墙的IP地址或主机名,然后使用正确的用户名和密码登录到防火墙的Web管理界面。通常,这些信息在防火墙设备的文档或设备上会有说明。 导…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)-机器人、强化学习

专属领域论文订阅 关注{晓理紫},每日更新论文,如感兴趣,请转发给有需要的同学,谢谢支持 如果你感觉对你有所帮助,请关注我,每日准时为你推送最新论文。 分类: 具身智能,机器人强化学习开放词汇&…

[C++开发 03_2/2 _ STL(185)]

知识点1:STL初始 概述: STL是标准模板库的意思,STL从广义上来讲分为:容器,算法,迭代器。 容器算法之间通过迭代器进行无缝连接。 知识点2:STL初始 2.1 STL诞生 C中面向对象的三大特性&#xff1…

九、Kotlin 注解

1. 什么是注解 注解是对程序的附件信息说明。 注解可以作用在类、函数、函数参数、属性等上面。 注解的信息可用于源码级、编译期、运行时。 2. 注解类的定义 使用元注解 Retention 声明注解类的作用时期。 使用元注解 Target 声明注解类的作用对象。 定义注解类时可以声…

8.6 代理设计模式

文章目录 一、代理模式(Proxy Pattern)概述二、代理模式和观察者设计模式三、模式结构四、协作角色五、实现策略六、相关模式七、示例八、应用 一、代理模式(Proxy Pattern)概述 代理模式是一种设计模式,它通过引入一个…

Windows Defender存在威胁执行操作无反应且一直存在红叉(已解决)

文章目录 前言问题如图一、原因二、解决办法(亲试有效)总结 前言 Windows安全中心(Windows Defender)执行快速扫描/完全扫描后一直存在威胁,执行隔离或者删除操作后下次扫描还会扫出该威胁,但看威胁文件位置…

38、Flink 的CDC 格式:canal部署以及示例

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

leetcode1237. 找出给定方程的正整数解

1237. 找出给定方程的正整数解https://leetcode.cn/problems/find-positive-integer-solution-for-a-given-equation/ 难度中等 101 给你一个函数 f(x, y) 和一个目标结果 z,函数公式未知,请你计算方程 f(x,y) z 所有可能的正整数 数对 x 和 y。满…

java生成验证码工具类,java生成图片验证码

java生成验证码工具类,java生成图片验证码 java生成验证码工具类,java生成图片验证码,java生成彩色图片验证码,带干扰线验证码。 调用结果: 工具类调用: GetMapping("/validateCode")public vo…

ubuntu设置右键打开terminator、code

前言: 这里介绍一种直接右键打开本地目录下的terminator和vscode的方法。 一:右键打开terminator 1.安装terminator sudo apt install terminator 2.安装nautilus-actions filemanager-actions sudo apt-get install nautilus-actions filemanager…

【大数据】Flink 中的事件时间处理

Flink 中的事件时间处理 1.时间戳2.水位线3.水位线传播和事件时间4.时间戳分配和水位线生成 在之前的博客中,我们强调了时间语义对于流处理应用的重要性并解释了 处理时间 和 事件时间 的差异。虽然处理时间是基于处理机器的本地时间,相对容易理解&#…

可视化智慧水电站EasyCVR视频智能监控系统方案设计与技术应用介绍

一、背景需求 水电站作为国家重要的能源基地,其安全运行对于保障能源供应和社会稳定具有重要意义。然而,传统的人工监控方式存在着诸多问题,如人力成本高、监控范围有限、反应不及时等。因此,水电站急需引进一种先进的视频智能监…