Hive集合数据类型

Hive大部分支持关系型数据的一些基本数据类型,如整数,浮点,布尔类型,时间类型,字符串类型等等。在上一章Hive基本数据类型当中有做了详细介绍。但是除了这些Hive还支持集合数据类型,如:array、struct 和 map 是集合实现

array数组

hive支持数值类型,这里hive数组和java当中数组是一致的,都是具有相同数据类型元素的集合。因为数组是有定义下标顺序的,可以通过下标快速定位数组中的元素。如:数学将在 Array[0] 中,英语将在 Array[3] 中找到。

Array< '数学''语文''信息技术''英语' >

struct 结构

Hive Struct集合类型,有点类似Java当中的对象,它由字段和对应字段定义的一个数据类型组成。如下,可以定义一个学生信息的Struct结构:

--声明struct集合类型
struct <name:String, sex:String, age:INT>

--集合对象
struct<'张三','男',19>

要访问结构中的字段,和Java一样,用点来获取,比如获取上面学生信息:

'姓名:'+Struct.name+ ' 性别:' + Struct.sex+ ' 年龄:' + Struct.age

Map集合

Map 数据类型也和java的Map集合概念一致,定义一个键/值对的集合,如定义一个成绩的map集合:

Map<String, int>

map('语文',88,'数学',90,'英语',85)

第一个String用于定义键的类型,int定义值的数据类型。想要获取map集合中的数据,比如获取语文成绩,map['语文']。


例子1,创建一个学生基本信息表,如下:

CREATE TABLE stuinfo( 
    idnumber STRING,
    basicinfo STRUCT<name:STRING,sex:STRING,age:INT>,
    score MAP<STRING, INTEGER>     
);