最近要重新找工作了,所以得把以前用过的东西复习复习。就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。如果按照关系型数据库的范式要求,这三个字段的数据是需要额外分表存储的。使用集合数据类型就可以将它们写入一张表而减少查询关联。以下是一行示例数据。
内容整理自《Hive编程指南》( https://book.douban.com/subject/25791255/)。{ "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 } }