本文部分内容来源《Hadoop海量数据处理 技术详解与项目实战》人民邮电出版社
一、 基本数据类型
数据类型所占字节开始支持版本TINYINT1byte,-128 ~ 127SMALLINT2byte,-32,768 ~ 32,767INT4byte,-2,147,483,648 ~ 2,147,483,647BIGINT8byte,-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807BOOLEANFLOAT4byte单精度DOUBLE8byte双精度STRINGBINARYHive0.8.0TIMESTAMPHive0.8.0DECIMALHive0.11.0CHARHive0.13.0VARCHARHive0.12.0DATEHive0.12.0
二、 集合数据类型
数据类型所占字节开始支持版本ARRAYARRAY类型是由一系列相同数据类型的元素组成,这些元素可以通过下标来访问。比如有一个ARRAY类型的变量fruits,它是由[‘apple’,’orange’,’mango’]组成,那么我们可以通过fruits[1]来访问元素orange,因为ARRAY类型的下标是从0开始的;MAPMAP包含key->value键值对,可以通过key来访问元素。比如”userlist”是一个map类型,其中username是key,password是value;那么我们可以通过userlist[‘username’]来得到这个用户对应的password;STRUCTSTRUCT可以包含不同数据类型的元素。这些元素可以通过”点语法”的方式来得到所需要的元素,比如user是一个STRUCT类型,那么可以通过user.address得到这个用户的地址。UNIONUNIONTYPEHive 0.7.0开始支持
三、 存储格式
Hive支持的文件存储格式有
- TEXTFILE
- SEQUENCEFILE
- RCFILE
- 自定义格式
在建表的时候,可以使用STORED AS子句指定文件存储的格式。
TEXTFILE
即通常说的文本格式,默认长期,数据不做压缩,磁盘开销大、数据解析开销大。
SEQUENCEFILE
Hadoop提供的一种二进制格式,使用方便、可分割、可压缩,并且按行进行切分
RCFILE
一种行列存储相结合的存储方式,首先,其将数据按行分块,保证同一条记录在一个块上,避免读一条记录多个块。其次,块上的数据按照列式存储,有利于数据压缩和快速地进行列存取。
自定义文件格式
用户通过实现InputFormat和OutputFormat来自定义输入输出格式。
四、 数据格式
当数据