SQL-Hive中常用的表格操作

运维 数据库运维
今天我们来讲讲Hive中常用的表格操作指令及相关效果。Hive系列文章预计10-20篇,主要讲数据分析中最基础的SQL技能。

[[393843]]

本文转载自微信公众号「巡山猫说数据」,作者巡山猫。转载本文请联系巡山猫说数据公众号。

今天我们来讲讲Hive中常用的表格操作指令及相关效果。

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

01-最基础的建表语句

Hive建表的全部建表语法如下:

  1. CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 表名 
  2. (列名 data_type [COMMENT 列注释], ...) 
  3. [COMMENT 表注释] 
  4. [PARTITIONED BY (列名 data_type [COMMENT 列注释], ...)] 
  5. [CLUSTERED BY (列名, 列名, ...)  
  6. [SORTED ,BY (列名 [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
  7. [ROW FORMAT row_format] 
  8. [STORED AS file_format] 
  9. [LOCATION hdfs_path] 

所有[ ]中的内容都是可选项,即可有可无,下面我们分别详细介绍。

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 表名

(列名 data_type)

是建表语句必须有的,举个例子,我们要建立一个用户启动表:

  1. CREATE TABLE t_od_use_cnt ( 
  2.       date_8 INT 
  3.       ,platform string 
  4.       ,app_version string 
  5.       ,user_id BIGINT 
  6.       ,use_cnt INT 
  7.       ,is_active TINYINT 
  8.       ); 

首先我们建一个库app,然后使用并在其中建表,执行效果如下:

  1. hive> create database app; 
  2. OK 
  3. Time taken: 0.899 seconds 
  4. hive> use app; 
  5. OK 
  6. Time taken: 0.03 seconds 
  7. hive> create table t_od_use_cnt( 
  8.     >       date_8 int 
  9.     >       ,platform string 
  10.     >       ,app_version string 
  11.     >       ,user_id bigint 
  12.     >       ,use_cnt int 
  13.     >       ,is_active tinyint 
  14.     >       ); 
  15. OK 
  16. Time taken: 0.389 seconds 

备注:Hive中的关键字大小写是不区分的,所有关键字均可使用小写。

02-查看表结构

执行语句:

  1. DESC 表名; 

查询上一步新建表的字段及字段对应的数据类型,运行效果如下:

  1. hive> desc t_od_use_cnt; 
  2. OK 
  3. date_8                int                                    
  4. platform              string                     
  5. app_version           string                               
  6. user_id               bigint                                
  7. use_cnt               int                                
  8. is_active             tinyint                                
  9. Time taken: 0.28 seconds, Fetched: 6 row(s) 

03-删除表

删除表的语句和删除库的类似,只是把database换成了table,都是使用drop关键字进行删除操作,慎重操作:

  1. DROP TABLE 表名; 

04-建分区表

Hive中有分区表的概念,分区表改变了Hive对数据存储的组织方式。查询时如果我们限定了分区范围,Hive就可以直接去相应的目录下查询数据,而不需要扫描整个表,所以当数据量很大时可以显著提高查询性能。

建立分区表要使用关键字[PARTITIONED BY (col_name data_type[COMMENT col_comment], ...)] ,注意分区的字段不可在普通字段中重复出现。分区表在工作中十分常见,一般来说公司所有的表都会以日期进行分区,以便提高查询效率。

我们还是以t_od_use_cnt为例,建表语句如下:

  1. CREATE TABLE t_od_use_cnt ( 
  2.       platform string comment '平台 android,ios' 
  3.       ,app_version string comment 'app版本' 
  4.       ,user_id BIGINT comment '用户id' 
  5.       ,use_cnt INT comment '当日使用次数' 
  6.       ,is_active TINYINT comment '是否活跃' 
  7.       ) partitioned BY (date_8 INT comment '日期'); 

05-查询既有建表语句

在公司中需要查询既有表的建表格式时使用以下语句即可:

  1. show create table tablename; 

查询上文已建表格效果如下:

  1. hive> show create table t_od_use_cnt; 
  2. OK 
  3. CREATE TABLE `t_od_use_cnt`( 
  4.   `platform` string COMMENT '平台 android,ios',  
  5.   `app_version` string COMMENT 'app版本,',  
  6.   `user_id` bigint COMMENT '用户id',  
  7.   `use_cnt` int COMMENT '当日使用次数',  
  8.   `is_active` tinyint COMMENT '是否活跃'
  9. PARTITIONED BY (  
  10.   `date_8` int COMMENT '日期'
  11. ROW FORMAT DELIMITED  
  12.   FIELDS TERMINATED BY ','  
  13. STORED AS INPUTFORMAT  
  14.   'org.apache.hadoop.mapred.TextInputFormat'  
  15. OUTPUTFORMAT  
  16.   'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
  17. LOCATION 
  18.   'hdfs://hadoop:9000/usr/hive/warehouse/t_od_use_cnt' 
  19. TBLPROPERTIES ( 
  20.   'transient_lastDdlTime'='1556161316'

 

责任编辑:武晓燕 来源: 巡山猫说数据
相关推荐

2021-05-28 07:36:18

MySQLWhereHive

2021-04-30 08:01:36

SQLHiveSelect

2011-05-26 14:31:57

Oracle数据库

2010-07-13 10:43:26

SQL Server数

2019-08-07 16:50:38

SQLjoingroup

2023-03-30 08:00:56

MySQL日期函数

2021-11-26 09:41:50

绘图工具软件工具开发

2022-06-30 08:31:54

排序函数SQL

2019-10-11 08:41:18

JavaMemcached数据库

2023-04-11 08:49:42

排序函数SQL

2011-01-06 09:28:19

SQL语句

2010-03-22 10:27:28

Python常用模块I

2023-03-17 16:49:42

开发Java框架

2018-05-10 16:02:48

Android程序赠工具

2022-08-30 21:01:17

开发Java框架

2010-04-01 09:46:04

Oracle日期函数

2014-11-04 10:34:27

JavaCache

2024-07-11 11:07:41

2010-07-05 12:40:56

SQL Server

2023-01-03 15:47:09

Linux内核C语言
点赞
收藏

51CTO技术栈公众号