读书笔记:Hive中的集合数据类型

     最近要重新找工作了,所以得把以前用过的东西复习复习。就Hive而言,支持关系型数据库中的大多数数据类型,所以基本的数据类型就不再复习了。需要留意的是它额外支持的3种集合数据类型,所以在这里简单整理一下。

①ARRAR

类似于java List。一组长度不定,具有相同类型元素的集合,通过下标(从0开始)索引。

②MAP

类似于java Map。一组长度不定,键和值类型预定义的集合,通过键映射。

③STRUCT

类似于C struct。一组长度固定,成员的名称和类型预定义,但成员之间相互独立的集合,通过“.”号访问。

     一个用于示例的HR部门的员工表。

CREATE TABLE employee (
	name			STRING,
	salary			FLOAT,
	subordinates	ARRAY<STRING>,
	deductions		MAP<STRING, FLOAT>,
	address			STRUCT<street:STRING, city:STRING, country:STRING, zip:INT>
);

     其中`subordinates`(下属员工)、`deductions`(工资扣除项目)和`address`(地址)三个字段分别用到了集合数据类型ARRAY、MAP和STRUCT。如果按照关系型数据库的范式要求,这三个字段的数据是需要额外分表存储的。使用集合数据类型就可以将它们写入一张表而减少查询关联。以下是一行示例数据。

{
	"name" : "Bilery Zoo",
	"salary" : 1024.0,
	"subordinates" : ["Linux OS", "MySQL DB", "Python LG"],
	"deductions" : {
		"Tax A" : .3,
		"Tax B" : .2,
		"Tax C" : .1
	},
	"address" : {
		"street" : "Jiangnan Road",
		"city" : "Hangzhou",
		"country" : "China",
		"zip" : 310000
	}
}
     内容整理自《Hive编程指南》( https://book.douban.com/subject/25791255/)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值