array 結構 (1)語法:array(val1,val2,val3,…) 操作類型:array array類型的數據可以通過'數組名[index]'的方式訪問,index從0開始: (2)建表: create external table temp.array_20181101_v2 ( did ...
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文件應註意,保持數組的分隔符和前面幾列的分隔符要不一樣。
‘|’比較特殊,需要加轉義符如,‘\|’,若是;’,/,或者空格則可以識別,