专栏首页巡山猫说数据「基础」SQL-Hive中常用的表格操作(下)

「基础」SQL-Hive中常用的表格操作(下)

今天我们来讲讲Hive中常用的表格修改的操作。

Hive系列文章预计10-20篇,主要讲数据分析中最基础的SQL技能。

01-表的重命名

执行语句:

alter table oldname rename to new_name;

下面我们将建好的表t_od_use_cnt重命名为t_od_use_cnt_new,然后再改回来。

运行效果如下:

hive> set hive.cli.print.current.db=true;
hive (default)> use app;
OK
Time taken: 0.896 seconds

hive (app)> show tables;
OK
t_od_use_cnt
Time taken: 0.569 seconds, Fetched: 1 row(s)

hive (app)> alter table t_od_use_cnt rename to t_od_use_cnt_new;
OK
Time taken: 0.697 seconds

hive (app)> show tables;
OK
t_od_use_cnt_new
Time taken: 0.039 seconds, Fetched: 1 row(s)

hive (app)> alter table t_od_use_cnt_new rename to t_od_use_cnt;
OK
Time taken: 0.393 seconds

hive (app)> show tables;
OK
t_od_use_cnt
Time taken: 0.043 seconds, Fetched: 1 row(s)

02-重命名字段 & 数据类型 & 注释

执行语句:

alter table tablename change column_old_name column_new_name new_type
[comment 'XXX'];

t_od_use_cnt中的user_id字段本来是bigint类型的,注释为用户id。

下面我们试着将user_id重命名为id,数据类型改为string类型,注释改为ID,然后再改回来。运行效果如下:

hive (app)> desc t_od_use_cnt;
OK
platform              string                平台 android,ios      
app_version           string                app版本               
user_id               bigint                用户id                
use_cnt               int                   当日使用次数              
is_active             tinyint               是否活跃                
date_8                int                   日期                  

# Partition Information      
# col_name              data_type             comment             

date_8                int                   日期                  
Time taken: 0.119 seconds, Fetched: 11 row(s)

hive (app)> alter table t_od_use_cnt change user_id id string          
          > comment 'ID';
OK
Time taken: 0.365 seconds

hive (app)> desc t_od_use_cnt;
OK
platform              string                平台 android,ios      
app_version           string                app版本               
id                    string                ID               
use_cnt               int                   当日使用次数              
is_active             tinyint               是否活跃                
date_8                int                   日期                  

# Partition Information      
# col_name              data_type             comment             

date_8                int                   日期                  
Time taken: 0.173 seconds, Fetched: 11 row(s)

hive (app)> alter table t_od_use_cnt change id user_id bigint 
          > comment '用户id';
OK
Time taken: 0.138 seconds

hive (app)> desc t_od_use_cnt;
OK
platform              string                平台 android,ios      
app_version           string                app版本               
user_id               bigint                用户id                
use_cnt               int                   当日使用次数              
is_active             tinyint               是否活跃                
date_8                int                   日期                  

# Partition Information      
# col_name              data_type             comment             

date_8                int                   日期                  
Time taken: 0.103 seconds, Fetched: 11 row(s)

03-增加列

执行语句:

alter table tablename add columns (
col_name1 datatype comment 'xxx',
col_name2 datatype comment 'xxx',
...) cascade;

通过此命令可以增加任意多个新列,每加一个列用逗号断开,comment子句是可选的。下面来演示一下实际使用,我们对表t_od_use_cnt 加入两个新列test1,test2,数据类型都是string,注释为‘测试’,运行效果如下:

hive (app)> alter table t_od_use_cnt  add columns (
          > test1 string comment '测试',
          > test2 string comment '测试') cascade;
OK
Time taken: 0.742 seconds
hive (app)> desc t_od_use_cnt;
OK
platform              string                平台 android,ios      
app_version           string                app版本               
user_id               bigint                ID                  
use_cnt               int                   当日使用次数              
is_active             tinyint               是否活跃                
test1                 string                测试                  
test2                 string                测试                  
date_8                int                   日期                  

# Partition Information      
# col_name              data_type             comment             

date_8                int                   日期                  
Time taken: 0.214 seconds, Fetched: 13 row(s)

04-删除 & 替换列

Hive中并没有直接删除列的命令,但可以通过replace命令删除之前的所有字段并重新制定新的所有字段,以此达到删除字段的效果,命令如下:

alter table table_name replace columns 
(col_name1 data_type [comment 'xxx'],
col_name2 data_type [comment 'xxx'],
...);

下面我们将上一步新加的两个test列删除掉,实际是将所有字段全部删掉,用新的字段代替旧的字段。不过alter语句只能改变元数据,如果该字段本身有数据存在,那么并不会将该字段下的数据一起删掉,可以理解为只删掉了列名。运行效果如下:

hive (app)> alter table t_od_use_cnt replace columns (
          >       platform string comment '平台 android,ios'
          >       ,app_version string comment 'app版本'
          >       ,user_id bigint comment '用户id'
          >       ,use_cnt int comment '当日使用次数'
          >       ,is_active tinyint comment '是否活跃'
          >       );
OK
Time taken: 0.328 seconds
 
hive (app)> desc t_od_use_cnt;
OK
platform              string                平台 android,ios      
app_version           string                app版本               
user_id               bigint                用户id                
use_cnt               int                   当日使用次数              
is_active             tinyint               是否活跃                
date_8                int                   日期                  
      
# Partition Information      
# col_name              data_type             comment             
      
date_8                int                   日期                  
Time taken: 0.146 seconds, Fetched: 11 row(s)

05-删除分区

有时我们需要删除表中的部分分区数据,而不是删除整个表的数据。

命令如下:

ALTER TABLE table_name DROP IF EXISTS PARTITION (col_name='xxx');

本文分享自微信公众号 - 巡山猫说数据(sven994777),作者:巡山猫

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 「基础」SQL-Hive中常用的表格操作(上)

    Hive系列文章预计10-20篇,主要讲数据分析中最基础的SQL技能。每周定期更新,欢迎关注公众号。

    巡山猫说数据
  • 「基础」SQL-Hive中常用的数据库操作

    如果想删除数据库,要么先将数据库中的表全部删除,此时可以使用CASCADE关键字,使用该关键字后,Hive会自己将数据库下的表全部删除。慎用慎用!

    巡山猫说数据
  • Hive中库和表的常见操作

    孙晨c
  • 「基础」SQL-Hive简介及常用数据类型

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 S...

    巡山猫说数据
  • Hive 系列 之 开篇

    细细品味这首诗,忽然发觉以前学这首诗的意义在于背诵和考试,如今细细品味这首诗,不禁感叹意境真好。天色微凉,牵着手,一起爬山那高高的山头看那天边的牵牛织女星,多么...

    kk大数据
  • 浅析大数据HIVE和HBASE有何区别

    Apache Hive是一个构建在Hadoop基础设施之上的数据仓库。通过Hive可以使用HQL语言查询存放在HDFS上的数据。HQL是一种类SQL语言,这种语...

    企鹅号小编
  • 一文看懂HIVE和HBASE的区别

    两者分别是什么Apache Hive是一个构建在hadoop基础设施之上的数据仓库。通过Hive可以使用HQL语言查询存放在HDFS上的数据。HQL是一种类SQ...

    小莹莹
  • 大数据入门基础系列之浅谈Hive和HBase的区别

    温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 在前面的博文里,我已经介绍了 Hive和HBase分别是什么? Apache Hive是一个构建...

    企鹅号小编
  • 值得拥有 不容错过的Hive精华汇总

    Hive作为Hadoop家族的重要一员,具有学习成本低,开发者可通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用。在攒...

    Albert陈凯
  • 大数据开发:Hive DML操作入门

    前面讲了Hive DDL操作,基本上与SQL的基本操作类似,有相关的基础的话,理解掌握起来是非常快的。而DML部分,主要是涉及到增删改,也可以对比着来理解掌握。...

    成都加米谷大数据
  • Apache Hive 3架构概述

    了解Apache Hive 3的主要设计功能(例如默认的ACID事务处理)可以帮助您使用Hive来满足企业数据仓库系统不断增长的需求。

    大数据杂货铺
  • HAWQ取代传统数仓实践(一)——为什么选择HAWQ

            为了跟上所谓“大数据”技术的脚步,从两年前开始着手实践各种SQL-on-Hadoop技术,从最初的Hive,到SparkSQL,再到Impala...

    用户1148526
  • Spark笔记11-Spark-SQL基础

    Hive会将SQL语句转成MapReduce作业,本身不执行SQL语句。 基本执行原理如下图:

    皮大大
  • 大数据技术hive介绍

    1.hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce...

    加米谷大数据
  • Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.1 Hive 介绍)(草稿)

    第11章 Hive:SQL on Hadoop 11.1 Hive 介绍 11.1.1 为什么需要Hive? Hadoop的出现,正如当年Java语言的出现,得...

    程裕强
  • 大数据时代的技术hive:hive介绍

      我最近研究了hive的相关技术,有点心得,这里和大家分享下。   首先我们要知道hive到底是做什么的。下面这几段文字很好的描述了hive的特性:   1....

    老白
  • 大数据初学 或Java工程师怎么转大数据?大数据基础技术学习路线图

    1.数据在体量方面很大,比如说文字,有各种各样的来源,有电子书|实体书|杂志|报刊等,它们的数据大吧。

    用户2292346
  • Spark SQL | 目前Spark社区最活跃的组件之一

    Spark SQL是一个用来处理结构化数据的Spark组件,前身是shark,但是shark过多的依赖于hive如采用hive的语法解析器、查询优化器等,制约了...

    大数据学习与分享
  • 2小时入门SparkSQL编程

    DataFrame参照了Pandas的思想,在RDD基础上增加了schma,能够获取列名信息。

    lyhue1991

扫码关注云+社区

领取腾讯云代金券