第1关:Hive 的 Alter Table 操作

news2024/12/26 14:51:52

相关知识

为了完成本关任务,你需要掌握: 1.Alter Table 命令

Alter Table 命令

Alter Table 命令 可以在 Hive 中修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作。

1.修改表名

 
  1. ALTER TABLE table_name RENAME TO new_table_name;

此命令可以将表 table_name 重命名为 new_table_name,数据所在的位置改变,但是分区名都没有改变。 这是一个hive 根据课程划分学生的分区表,最后一列为分区的课程。

,

现在将表名 test1 改为新表名 student。

 
  1. alter table test1 rename to student;

,

再次查询 test1 内容,系统提示找不到 test1 表了。查询新表名 student ,查询出来的数据为原表 test1 的内容,可以看到表分区的名字并没有修改,只是数据所在的位置发生改变。

2.修改列名和注释

 
  1. ALTER TABLE table_name CHANGE col new_col STRING COMMENT 'xxxxxx'

查看 student 的表结构

,

修改 student 表中列名 stu_no 为 stu_id,并将改列int 数据类型改为 string 数据类型,添加注释。

 
  1. alter table student change stu_no stu_id string comment 'Student number';

再次查看表结构,发生了以下改变

,

3.改变列的位置

 
  1. ALTER TABLE table_name CHANGE [col1 new_col column_type] [FIRST|AFTER col2]

修改列的位置,FIRST将列放在第一列,AFTER col2是将 col1 放在 col2 的后面一列。

,

修改后发现列数据不会根据列的位置发生改变,因为Hive 中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。注意换列的位置的时候注意数据类型,或者在插入数据前将列位置排序好,最后将数据插入进来。 将 stu_id 列放回第一行。

,

4.增加列

 
  1. ALTER TABLE table_name ADD COLUMNS (col_name data_type [CONMMENT col_comment], ...);

ADD COLUMNS 允许用户在当前列的末尾,分区列之前添加新的列。

在 student 表中插入一列 score

 
  1. alter table student add columns (score string comment 'Course results');

,

插入后,数据查询出来发现 score 新增出来,但是数据为空值。

5.更新列

 
  1. ALTER TABLE table_name REPLACE COLUMNS (col_name data_type [CONMMENT col_comment], ...);

REPLACE COLUMNS 允许用户更新列,更新的过程是先删除当前的列,然后在加入新的列。

只保留学生学号 stu_id 和学生姓名 stu_name 列。

 
  1. alter table student replace columns (stu_id string,stu_name string);

查询表结构和表数据发现 student 只保留了 stu_id 和stu_name 两列,其他的列被删除了(更新列需慎用)。

,

但是数据并没有删除,只是没有对应的列所以没有显示出来,如果这个时候加上两列的话,数据依旧可以显示。

,

,

加分区表字段需要加上 hiveQL 语句要加上 CASCADE 参数。

6.增加表的属性

 
  1. ALTER TABLE table_name SET TBLPEOPERTIES table_properties;

用户可以使用这个语句增加表属性,table_properties的结构为(property_name=property_value,property_name=property_value, ...),目前last_modified_time(最后修改时间),last_modified_user(做最后修改的用户)是由 Hive 自动管理的。用户可以向列中添加自己的属性,然后使用DISCRIBE EXTEBDED TABLE来获取这些信息。

,

 
  1. #内部表转外部表
  2. alter table table_name set TBLPROPERTIES ('EXTERNAL'='TRUE');
  3. #外部表转内部表
  4. alter table table_name set TBLPROPERTIES ('EXTERNAL'='FALSE');

7.增加 SerDE 属性

 
  1. ALTER TABLE table_name SET SERDE serde_class_name [WHIT SERDEPROPERTIES serde_properties];
  2. ALTER TABLE table_name SET SERDEPROPERTIES serde_properties;

上面两个命令都允许用户向 SerDE 对象增加用户定义的元数据。Hive为了序列化和反序列化数据,将会初始化SerDE属性,并将属性传给表的 SerDE。这样用户可以为自定义的SerDe 存储属性。上面serde_properties的结构为(property_name=property_value,property_name=property_value, ...)。

 
  1. #设置表字符格式
  2. ALTER TABLE student SET SERDEPROPERTIES ('charset' = 'GBK');

8.修改表文件格式和组织

 
  1. ALTER TABLE table_name SET FILEFORMAT file_format;
  2. ALTER TABLE table_name CLUSTERED BY (col_name, col_name, ...)[SORTED By (col_name, ...)] INTO num_buckets BUCKETS;

上面两个命令都修改了表的物理属性。

编程要求

根据相关知识,在右侧命令行进行操作,Hadoop 服务已经自动启动了,只需要输入hive命令进入 Hive 客户端即可进行操作。 1.创建表

 
  1. create table employee(id int,name string,department string,salary float)row format delimited fields terminated by ",";

2.导入数据

 
  1. load data local inpath '/data/workspace/myshixun/data/emp.txt' into table employee;

3.使用 Alter Table 进行操作

  • 下表包含表字段,显示的字段要被更改
字段名数据类型更改字段名称转换为数据类型
idintemp_idint
namestringemp_namestring
departmentstringdepartmentstring
salaryfloatsalarydouble
  • 新增列 hiredate 类型为 date。

# hive

#hive>create table employee(id int,name string,department string,salary float)row format delimited fields terminated by ",";

#hive> load data local inpath '/data/workspace/myshixun/data/emp.txt' into table employee;
Loading data to table default.employee

hive> alter table employee change id emp_id int ;
OK
Time taken: 0.115 seconds

hive> alter table employee change name emp_name string ;
OK
Time taken: 0.052 seconds

hive> alter table employee change  salary salary double ;
OK
Time taken: 0.051 seconds

hive> alter table employee add columns (hiredate date);

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

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

相关文章

光谱-空间特征分割提取:多光谱图像压缩

Spectral–Spatial Feature Partitioned Extraction Based on CNN for Multispectral Image Compression (基于CNN的光谱-空间特征分割提取多光谱图像压缩) 近年来,多光谱成像技术的迅速发展引起了各领域的高度重视,这就不可避免…

[vulntarget靶场] vulntarget-c

靶场地址: https://github.com/crow821/vulntarget 拓扑结构 信息收集 主机发现 netdiscover -r 192.168.111.0/24 -i eth0端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.131访问80端口,发现为Laravel v8.78.1框架 vulmap探测…

Windows--Python永久换下载源

1.新建pip文件夹,注意路径 2.在上述文件中,新建文件pip.ini 3.pip.ini记事本打开,输入内容,保存完事。 [global] index-url https://pypi.douban.com/simple

和 Node.js 说拜拜,Deno零配置解决方案

不知道大家注意没有,在我们启动各种类型的 Node repo 时,root 目录很快就会被配置文件塞满。例如,在最新版本的 Next.js 中,我们就有 next.config.js、eslintrc.json、tsconfig.json 和 package.json。而在样式那边,还…

一百八十二、大数据离线数仓完整流程——步骤一、用Kettle从Kafka、MySQL等数据源采集数据然后写入HDFS

一、目的 经过6个月的奋斗,项目的离线数仓部分终于可以上线了,因此整理一下离线数仓的整个流程,既是大家提供一个案例经验,也是对自己近半年的工作进行一个总结。 二、项目背景 项目行业属于交通行业,因此数据具有很…

CeresPCL ICP精配准(点到面)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 ICP算法总共分为6个阶段,如下图所示: (1)挑选发生重叠的点云子集,这一步如果原始点云数据量比较巨大,一般会对原始点云进行下采样操作。 (2)匹配特征点。通常是距离最近的两个点,当然这需要视评判的准则而…

Linux系统之links和elinks命令的基本使用

Linux系统之links和elinks命令的基本使用 一、links与elinks命令介绍1. links命令简介2. elinks命令简介 二、links与elinks命令区别三、links命令选项解释四、links命令的基本使用1. links安装2. 查看links版本3. 图形模式打开网址4. 直接使用links命令5. 打印url版本到标准格…

WordPress还原重置插件WP Reset 教程!

这是一篇完整的 WordPress 还原教程,我们将使用一款插件,快速重置整个 WordPress 网站。 有时在安装不同主题、网站插件后,可能会导致程序码彼此的冲突,而让网站出现跑版、错误等 ..,这时直接重新来过可能反而比较快一…

贪心算法总结归类(图文解析)

贪心算法实际上并没有什么套路可言,贪心的关键就在于它的思想: 如何求出局部最优解,通过局部最优解从而推导出全局最优解 常见的贪心算法题目 455. 分发饼干 这题的解法很符合“贪心”二字 如果使用暴力的解法,那么本题是通过…

福建江夏学院蔡慧梅主任一行莅临拓世科技集团,共探AI+时代教育新未来

在科技的海洋中,产业是那航行的巨轮,而教育则是指引方向的灯塔。当巨轮与灯塔相互辉映,产教融合与校企合作便成为了推动国家科技创新和人才培养的金钥匙,为未来开启一扇扇充满希望的大门。 2023年9月24日,福建江夏学院…

leetcodetop100 (22) 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表 简单的用一个动态数组Arraylist记录,然后倒序遍历赋值给一个新的链表,这种空间复杂度是o(n),估计需要优化。 采用双指针; 我们可以申请两个指针&#xf…

ansible安装、点对点Ad-Hoc、模块、剧本Playbook

DevOps: 官网:https://docs.ansible.com 自动化运维工具对比 C/S 架构:客户端/服务端 Puppet:基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱 SaltStack:基于 Python 开发,采用 C/S 架构,YAML使得配置脚本更简单.需要配置客户端及服务器…

Spring Boot 技术架构图(InsCode AI 创作助手辅助)

Spring Boot 技术架构是一种用于构建现代应用程序的框架,它可以与各种前端、代理、网关、业务服务、中间件、存储、持续集成和容器服务集成在一起,以创建功能强大的应用程序。 源文件下载链接!!!!&#xff…

Elasticsearch—(MacOs)

1⃣️环境准备 准备 Java 环境:终端输入 java -version 命令来确认版本是否符合 Elasticsearch 要求下载并解压 Elasticsearch:前往(https://www.elastic.co/downloads/elasticsearch)选择适合你的 Mac 系统的 Elasticsearch 版本…

【Linux学习】03Linux用户和权限

Linux(B站黑马)学习笔记 01Linux初识与安装 02Linux基础命令 03Linux用户和权限 文章目录 Linux(B站黑马)学习笔记前言03Linux用户和权限认知root用户root用户(超级管理员)su和exit命令sudo命令 用户、用户…

【Spring Boot】实战:实现数据缓存框架

🌿欢迎来到@衍生星球的CSDN博文🌿 🍁本文主要学习【Spring Boot】实现数据缓存框架 🍁 🌱我是衍生星球,一个从事集成开发的打工人🌱 ⭐️喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路⭐️💠作为一名热衷于分享知识的程序员,我乐于在CSDN上与广大开发者…

Hbuilder本地调试微信H5项目(二)--添加UView框架插件

摘要 在一个已创建的Hbuilder项目中,添加uView框架插件 前置准备 已安装Hbuilder 已创建uni-app的H5默认模板项目 实现逻辑 在Hbuilder官网找到组件说明页面 下载插件并导入HbuilderX 具体实现 访问网站 访问网址Hbuilder的uView1.8.6版本说明页 或者访问…

MySQL索引是什么

1、索引是什么 1、MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构 索引的本质:数据结构。 索引的目的在于提高查询效率,可以类比字典或者一本书的目录,如果要查“mysql”这个单词…

服务断路器_什么是灾难性雪崩效应

什么是灾难性雪崩效应 假设我们有两个访问量比较大的服务A和B,这两个服务分别依赖C和D,C和D服务都依赖E服务。 A和B不断的调用C,D处理客户请求和返回需要的数据。当E服务不能供服务的时候,C和D的超时和重试机制会被执行 由于新的调用不断的产生&#xf…

【算法深入浅出】字符串匹配之 KMP 算法

KMP 算法是一种字符串匹配算法。字符串匹配算法的目标是:在字符串 s 中找到与模式串 p 相等的子串,输出其位置。例如:s “abcdef”,p “cdef”,p 在 s 中的位置是 2(从 0 开始计数)。 容易想到…