Hive基本数据类型
Hive基本上支持大多数关系型数据库的基本数据类型,比如不同长度的整数型和浮点型,支持布尔类型,也支持无长度限制的字符串类型。一些常见的基本数据类型如下:
类型分类 | 类型 | 长度 | 备注 |
数值类型 | TINYINT | 1字节 | 有符号整型,如20 |
SMALLINT | 2字节 | 有符号整型,如300 | |
INT | 4字节 | 有符号整型,如9999 | |
BIGINT | 8字节 | 有符号整型 | |
FLOAT | 4字节 | 有符号单精度浮点数,如3.14159 | |
DOUBLE | 8字节 | 有符号双精度浮点数 | |
DECIMAL | -- | 可带小数的精确数字字符串 | |
时间类型 | TIMESTAMP | -- | UTC时间,时间戳:yyyy-mm-dd hh:mm:ss[.f...] |
DATE | -- | 日期,内容格式:YYYY-MM-DD | |
字符类型 | STRING | -- | 字符串 |
VARCHAR | 字符数范围1 - 65535 | 长度不定字符串 | |
CHAR | 最大的字符数:255 | 长度固定字符串 | |
其它类型 | BOOLEAN | -- | 布尔类型 TRUE/FALSE |
BINARY | -- | 字节序列 |
Hive集合数据类型
Hive大部分支持关系型数据的一些基本数据类型,如整数,浮点,布尔类型,时间类型,字符串类型等等。在上一章Hive基本数据类型当中有做了详细介绍。但是除了这些Hive还支持集合数据类型,如:array、struct 和 map 是集合实现
array数组
hive支持数值类型,这里hive数组和java当中数组是一致的,都是具有相同数据类型元素的集合。因为数组是有定义下标顺序的,可以通过下标快速定位数组中的元素。如:数学将在 Array[0] 中,英语将在 Array[3] 中找到。
Array< '数学'、'语文'、'信息技术'、'英语' >
struct 结构
Hive Struct集合类型,有点类似Java当中的对象,它由字段和对应字段定义的一个数据类型组成。如下,可以定义一个学生信息的Struct结构:
--声明struct集合类型
struct
--集合对象
struct<'张三','男',19>
要访问结构中的字段,和Java一样,用点来获取,比如获取上面学生信息:
'姓名:'+Struct.name+ ' 性别:' + Struct.sex+ ' 年龄:' + Struct.age
Map集合
Map 数据类型也和java的Map集合概念一致,定义一个键/值对的集合,如定义一个成绩的map集合:
Map
map('语文',88,'数学',90,'英语',85)
第一个String用于定义键的类型,int定义值的数据类型。想要获取map集合中的数据,比如获取语文成绩,map['语文']。
例子1,创建一个学生基本信息表,如下:
CREATE TABLE stuinfo(
idnumber STRING,
basicinfo STRUCT,
score MAP
);