Hive Tutorial(一) - Hive的数据类型
简介
Hive支持关系型数据库中的大多数基本数据类型,同时也支持关系型数据库中很少出现的3种集合数据类型
基本数据类型
Hive支持多种不同长度的整型和浮点型数据类型,支持布尔类型,也支持无长度限制的字符串类型。Hive v0.8.0版本中增加了时间戳数据类型和二进制数组数据类型。
表1: 基本数据类型
数据类型 | 长度 | 例子 |
---|---|---|
TINYINT | 1 byte有符号整数 | 10 |
SMALINT | 2 byte有符号整数 | 10 |
INT | 4 byte有符号整数 | 10 |
BIGINT | 8byte有符号整数 | 10 |
BOOLEAN | 布尔类型,true或者false | False |
FLOAT | 单精度浮点数 | 1.14159 |
DOUBLE | 双精度浮点数 | 1.14159 |
STRING | 字符序列。 可以指定字符集。 使用单引号或者双引号 |
'now is the time',“for all good men' |
TIMESTAMP | 整数,浮点数或者字符串 | 1327882394 (Unix 新纪元秒) ,1327882394.123456789 (Unix新纪元秒并跟随有纳秒数) '2012-02-0312:34:56. 123456789'(JDBC所兼容的java.sql.Timestamp时间格式) |
BINARY | 字节数组 |
集合数据类型
表2: 集合数据类型
数据类型 | 长度 | 例子 |
---|---|---|
struct | 和C语言中的struct或者“对象”类似,都可以通过STRUCT“点”符号访问元素内容。 例如,如果某个列的数据类型 STRUCT{first STRING,last STRING} ,那么第1个元素可以通过 字段名.first 来引用 |
struct ('John','Doe') |
MAP | MAP是一组键值对元组集合,使用数组表示法(例如['key'])可以访问元素。 例如,如果某个列的数MAP类型是MAP,其中键->值对是 ‘first’->‘John' 和'last'->'Doe’ ,那么可以通过字段名[last']获取最后1个元素 |
map('first', 'John', 'last', 'Doe') |
array | 数组是一组具有相同类型和名称的变量的集合。 这ARRAY些变量称为数组的元素,每个数组元素都有一个编Array('John','Doe')号,编号从零开始。 例如,数组值为["John','Doe'],那么第2个元素可以通过数组名[]进行引用 |
Array('Joe', 'John') |
文本文件数据编码
表3: Hive 中默认的记录和字段分割符
分隔符 | 描述 |
---|---|
\n | 对于文本文件来说,每行都是一条记录,因此换行符可以分割记录 |
^A (Ctrl+A) | 用于分隔字段(列)。 在CREATE TABLE语句中可以使用八进制编码\001表示 |
^B | 用于分隔ARRARY或者STRUCT中的元素,或用于MAP中键-值对之间的分隔。 在CREATE TABLE语句中可以使用八进制编码\002表示 |
^C | 用于MAP中键和值之间的分隔。在CREATE TABLE语句中可以使用八进制编码\003表示 |