学科分类
目录
Hadoop技术栈

Hive内置数据类型

Hive 的内置数据类型可以分为两大类,分别是基础数据类型和复杂数据类型。接下来,我们通过两张表来列举,具体如表1和表2所示。

表1 Hive基本数据类型

数据类型 描述
TINYINT 1字节的有符号整数,从-128至127
SMALLINT 2字节有符号整数,从-32768至32767
INT 4字节有符号整数,从从-231到231-1
BIGINT 8字节有符号整数,从从-263到263-1
FLOAT 4字节单精度浮点数
DOUBLE 8字节双精度浮点数
DOUBLE PRECISION Double的别名,从Hive2.2.0开始提供
DECIMAL 任意精度的带符号小数
NUMERIC 同样是DECIMAL,从Hive3.0开始
TIMESTAMP 精度到纳秒的时间戳
DATE 以年/月/日形式描述的日期
INTERVAL 表示时间间隔
STRING 字符串
VARCHAR 同STRING,字符串长度不固定
CHAR 固定长度的字符串
BOOLEAN 用于存储真值(TRUE)和假值(FALSE)
BINARY 字节数组

表2 Hive复杂数据类型

数据类型 描述
ARRAY 一组有序字段,字段类型必须相同
MAP 一组无序键值对。键的类型必须是原子类型,值可以是任意类型,同一个映射的键的类型必须相同,值的类型也必须相同
STRUCT 一组命名的字段,字段的类型可以不同

表1罗列的Hive基本数据类型多数对应的是Java中的类型,其中:

(1)TINYINT、SMALLINT、INT以及BIGINT,分别等价于Java中的byte、short、int和long数据类型,它们分别表示的是1字节、2字节、4字节和8字节的有符号整数。

(2)FLOAT和DOUBLE对应的是Java中的float和double类型,分别为32位和64位浮点数。

(3)STRING用于存储文本,并且理论上最多可以存储2GB的字符数。

(4)BINARY用于存储变长的二进制数据。

表2罗列的Hive的复杂数据类型中,ARRAY和MAP这两种数据类型与Java中的同名数据类型类似,而STRUCT是一种记录类型,它封装了一个命令的字段集合。复杂数据类型允许任意层次的嵌套,其声明方式必须使用尖括号指明其中数据字段的类型,示例代码如下:

CREAT TABLE complex(

  col1 ARRAY<int>,

  col2 Map<INT,STRING>,

  col3 STRUCT<a:STRING,b:INT,c:DOUBLE>

)
点击此处
隐藏目录