首页 > 其他 > 详细

hive复杂数据类型: 如何存 如何取

时间:2019-04-02 11:46:24      阅读:156      评论:0      收藏:0      [点我收藏+]

目前所学的复杂数据类型有三种array,map,struct。

复杂数据类型: 如何存 如何取(*****)

1.array(用这种数据类型的特点就是集合里的每一个字段都是一个具体的信息,不会是那种key与values的关系)

技术分享图片

load数据如上所示,一共两个字段,ruoze  和他们工作的城市

也就是字段与字段之间的分割用table array字段之间的分割用“,”。

create table hive_array(
name string,
work_locations array<string>
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t‘--表示字段与字段之间的分割用table
COLLECTION ITEMS TERMINATED BY ‘,‘;--表示集合之内的分割用逗号。集合就是代表array这个复杂数据类型里边的数据之间的分割。

load data local inpath ‘/home/hadoop/data/hive_array.txt‘
overwrite into table hive_array;

技术分享图片


select * from hive_array where array_contains(work_locations,‘tianjin‘);

array_contains这个函数是array_contains(array字段,‘字段包含的内容’)

比如以上就是array字段包含tianjin的数据。

 

2.map : key-value

技术分享图片

以上数据一共有3个字段,分别为id,name,member。其中member里的内容都是以key:values的形式出现的,若是这种形式一般用map这种复杂数据类型


father:xiaoming#mother:xiaohuang#brother:xiaoxu
create table hive_map(
id int,
name string,
members map<string,string>,
age int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘--字段之间用逗号分隔
COLLECTION ITEMS TERMINATED BY ‘#‘--集合也就是map字段中的数据key:values相互之间用#分割
MAP KEYS TERMINATED BY ‘:‘;map中key与values之间用冒号分割

load data local inpath ‘/home/hadoop/data/hive_map.txt‘
overwrite into table hive_map;

 

 

3.struct struct(‘a‘,1,2,3,4)(这个数据类型的特点就是可以包含各种各样的数据类型。但是struct可以是任意数据类型,在写struct数据类型时,在<>中要写清楚struct字段中的字段名称跟数据类型)

技术分享图片

 

create table hive_struct(
ip string,
userinfo struct<name:string,age:int>--struct这个数据类型中的字段名,字段类型

)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘#‘--字段之间的分割用#
COLLECTION ITEMS TERMINATED BY ‘:‘;--集合之间的分割用冒号

load data local inpath ‘/home/hadoop/data/hive_struct.txt‘
overwrite into table hive_struct;

 

hive复杂数据类型: 如何存 如何取

原文:https://www.cnblogs.com/xuziyu/p/10551872.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!