Hive常用操作
前言
Hive支持常见的SQL语句, 除此之外它还有其独特的部分. 常见SQL语句与关系型数据库(例如MySQL)中的语法一致, 这里就不再做详细说明. 我们主要来看Hive中不一样的部分.
Hive的所有操作可以去Hive官网查看, 点击此处LanguageManual
Hive其实并不难, 对于有写过SQL语句的人来说会更简单. 在学习Hive时, 建议大家边学边敲, 多做联系.
准备工作
既然要使用Hive就要有Hive的环境, 可以根据这篇博客来安装Hive以及与Hive相关的环境(Hadoop, Yarn)大数据生态圈搭建
这里我使用的是基于Mysql的远程模式来操作Hive.
操作流程
创建第一个表格
连接进入Hive shell 之后, 先建一个新的数据库, 之后的大部分操作我们都在这个数据库中来练习.
创建:
create database hive_test;
使用该数据库:
use hive_test;
然后, 创建第一个表gfstbl, 也可使用数据库.表的格式(例如hive_test.gfstbl).
CREATE TABLE gfstbl(
id INT,
name STRING,
age INT,
gfs ARRAY<STRING>,
address MAP<STRING,STRING>,
info STRUCT<country:String,province:String,city:String>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' '
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':'
LINES TERMINATED BY '\n';
解释说明:
- create语句, ()中为字段之间用逗号分隔, 字段名称与类型之间用空格隔开. 这里字段的数据类型有整型, 字符串, 数组, 键值对以及结构体.
Hive支持的数据类型:
数据类型 | 注释 |
---|---|
tinyint | 短整型, 范围:-128~127 |
smallint | 小整型, -32768~32767 |
int | 整型, -232~232-1 |
bigint | 大整型, 就很大 |
float | 单精度浮点数 |
double | 双精度浮点数 |
decimal | 精度38位十进制数 |
date | 日期 |
timestamp | 时间戳 |
char | 字符 |
string | 字符串 |
varchar | 可变长度字符串 |
array | 数组类型 |
map | 键值对类型 |
structs | 结构化类型 |
- ROW FORMAT DELIMITED : 行格式分隔
- FIELDS TERMINATED BY ’ ’ : 字段之间使用空格分隔
- COLLECTION ITEMS TERMINATED BY ‘,’ : 集合(就是这的数据)使用逗号分隔
- MAP KEYS TERMINATED BY ‘:’ : 键值对使用冒号分隔
- LINES TERMINATED BY ‘\n’ : 记录之间使用换行符分隔
- ; : 每一条SQL语句结尾都需要以分号结束
- 除此之外, 如果去掉分号, 加上:LOCATION “/test”; , 就可设置源数据在HDFS中存放的位置, 若不设置默认就在Hive的工作目录区.
创建表的SQL语句公式如下, 我们会根据Hive表的类型将这一公式分开操作.
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later)
[(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name