Hive基础

本文介绍了Hive的基础知识,包括原始类型如TINYINT、STRING、DATE等,以及复合类型如ARRAY、MAP、STRUCT。还详细讲解了建表语句,并重点讨论了分区功能,包括如何建立、删除分区以及如何载入分区数据。此外,文章还提到了Hive中的桶(bucket)概念,用于拆散表数据。

原始类型

TINYINT
1byte的长度,通过后缀Y声明,如:13Y。
SMALLINT
2byte长度,通过后缀S声明,如14S。
INT
4byte长度,普通数字默认为INT
FLOAT
4byte单精度浮点数
DOUBLE
8byte双精度浮点数
DECIMAL
可指定精度的浮点数,默认精度为decimal(10,0)
BINARY
二进制数据
BOOLEAN
取值TRUE或FALSE
STRING
字符串类型,最大容量2G
CHAR
字符类型,最大长度255
VARCHAR
变长类型的CHAR,最大长度65535
DATE
日期类型,格式:YYYY-MM-DD
TIMESTAMP
时间戳类型,格式:YYYY-MM-DD HH:MM:SS[.fff]

复合类型

ARRAY
数组类型,包含一系列统一类型的数据,如:[‘apple’,’juice’],可以通过index来访问。
MAP
映射表的类型,通过key来访问value,如:{1:”apple”,2:”juice”},fruit[1]=”apple”
STRUCT
用户自定义类型,同MAP类型类似,如:{1,“apple”},默认第一列为col1,依次递增
NAMED STRUCT
指定Name的Struct结构,通过Name直接访问value,如:{“apple”:“gala”},fruit.apple=”gala”
UNION
可以组合上述的任何数据类型,如:{123:[“man”,”women”]}

建表语句

CREATE TABLE table_test
(
col1 string,/*列名 列类型*/
col2 ARRAY<string>,
col3 STRUCT<name1:int,name2:string,name3:float>,
col4 MAP<string,int>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'/*指定每一行字段之间的分隔符*/
COLLECTIONS ITEMS TERMINATED BY ','/*指定数组元素的分隔符*/
MAP KEYS TERMINATED BY ':';/*指定MAP中Key和Value的分隔符*/

新建数据库后,hive会为每个数据库建立一个文件夹,文件夹的默认位置在:/user/hive/warehouse.

分区(partition)

默认情况下,一个简单的查询会扫描整个表文件,当表中的数据非常大的时候,会导致查询的效率较低.通过分区(partition)的方式,减少每次查询扫描的文件大小.

建立分区

CREATE TABLE ...
PARTITIONED BY (year INT,month INT) /*建立表分区,指定分区字段*/
ROW FORMAT DELIMITED ...

/*在表中增加分区*/
ALTER TABLE table_name ADD
PARTITION (year=2015,month=1)
PARTITION (year=2015,month=2)

/*显示partition信息*/
SHOW PARTITIONS table_name;

删除分区

ALTER TABLE table_name
DROP IF EXISTS PARTITION (year=2015,month=1);

载入分区数据

LOAD DATA LOCAL INPATH
'/path/to/file'
OVERWRITE INTO TABLE table_name
PARTITION (year=2015,month=1);

桶(bucket)

bucket是除了分区外的另外一种拆散表数据的方式.建表时,我们可以指定根据哪些字段分bucket和bucket的总数量.在实际使用中,推荐每个bucket的数据大小为HDFS block size的2*N倍.

/*在建表语句中,增加下列信息*/
CLUSTERED BY (bucket_field) INTO 2 BUCKETS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值