hive笔记:复杂数据类型-array结构
array 结构
(1)语法:array(val1,val2,val3,…) 操作类型:array
array类型的数据可以通过'数组名[index]'的方式访问,index从0开始:
(2)建表:
create external table temp.array_20181101_v2
( did string,
meiti array<string>
)
row format delimited fields terminated by '\t'
collection items terminated by ','(必须使)
location '/tmp/201810/array'
注意:
a.必须添加collection items terminated by ','若不添加,虽然是array字段但结果不全,只有部分的meiti转换为array字段
b.'fields terminated by' :字段与字段之间的分隔符
c.''collection items terminated by' :一个字段各个item的分隔符
(4)查询方法或函数:
原表数据
array类型的数据可以通过'数组名[index]'的方式访问,index从0开始
案例:
%jdbc(hive)
select did,meiti[0],meiti[1]
from temp.array_20181101_v2
array_contains():在字段类型为array中查找是否包含以及不包含某元素,在where后使用
如:
%jdbc(hive)
select did,meiti
from temp.array_20181101_v2
where array_contains(meiti, '1118')
and !array_contains(meiti, '1370')
lateral view explode (array)字段
%jdbc(hive)
select did,meiti
from temp.array_20181101_v2
lateral view explode(meiti) b1 as meiti1
group by id ,meiti1;
(5)txt文件上传建表的格式问题
txt文件应注意,保持数组的分隔符和前面几列的分隔符要不一样。
‘|’比较特殊,需要加转义符如,‘\|’,若是;’,/,或者空格则可以识别,
上一篇: 天正建筑cad怎么绘制凹阳台?
下一篇: SQLServer之修改存储过程