hivesql執行優化引數配置
hivesql常用資料處理語句
hivesql中複雜資料型別操作
hive有三種複雜資料型別array、map和struct,複雜資料型別允許任意層次的巢狀。
目錄
array型別
map型別
struct型別
name與locations之間製表符分隔,locations中元素之間逗號分隔,資料樣本集為:
zhangsan beijing,shanghai,tianjin,hangzhou建表語句lisi changchu,chengdu,wuhan,beijing
create table hive_array(name string, work_locationsarray)匯入資料row format delimited fields terminated by '\t'
collection items terminated by ',';
load data local inpath '/home/zhangfei/data/work_locations.txt' overwrite into table hive_array;常用查詢
select * from hive_array;array_contains常與where子句連用zhangsan ["beijing","shanghai","tianjin","hangzhou"]
lisi ["changchu","chengdu","wuhan","beijing"]
select name, work_locations[0] location from hive_array;資料格式--取array的第乙個元素 work_locations[0],同樣是採用下標的方式,下標從0開始
select name, size(work_locations) location from hive_array;
--取array的長度size(work_locations)
select * from hive_array where array_contains(work_locations,'tianjin');
--取判斷為ture的資料 array_contains(work_locations,'tianjin')
select explode(work_locations) from hive_array ;
--explode()會將陣列元素展開展示
注意:explode()函式只是生成了乙個資料的展示方式,無法在表中產生乙個新的資料列,即select name,explode(work_locations) from hive_array 會報錯的
欄位與字段分隔符: 「,」;需要map欄位之間的分隔符:"#";map內部k-v分隔符:":"
zhangsan, father:xiaoming #mother:xiaohuang #brother:xiaoxu,28建表語句lisi, father:mayun #mother:huangyi #brother:guanyu,22
wangwu, father:wangjianlin #mother:ruhua #sister:jingtian,29
mayun, father:mayongzhen#mother:angelababy,26
create table hive_map(匯入資料id int, name string, members map, age int
)row format delimited
fields terminated by ','
collection items terminated by '#' ---條目分隔符
map keys terminated by ':'
; ---k-v分隔符
load data local inpath '/home/zhangfei/data/hive_map.txt' overwrite into table hive_map;常用查詢
select * from hive_map;查詢語句zhangsan 28
lisi 22
wangwu 29
mayun 26
select id, name, members['father'] father, members['mother'] mother, age from hive_map;資料格式select id, name, map_keys(members) as relation from hive_map;
select id, name, map_values(members) as relation from hive_map;
select id,name,size(members) num from hive_map;
select * from hive_map where array_contains(map_keys(members), 'brother');
select id,name, members['brother'] brother from hive_map where array_contains(map_keys(members), 'brother');
說明:字段之間#分割,第二個字段之間冒號分割
192.168.1.1 # zhangsan:40建表語句192.168.1.2 # lisi:50
192.168.1.3 # wangwu:60
192.168.1.4 # zhaoliu:70
create table hive_struct(匯入資料ip string, info struct
)row format delimited
fields terminated by '#'
collection items terminated by ':';
load data local inpath '/home/zhangfei/data/hive_struct.txt' into table hive_struct;常用查詢
select * from hive_struct;可直接通過.訪問資料ip info
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
select ip, info.name from hive_struct;192.168.1.1 zhangsan
192.168.1.2 lisi
192.168.1.3 wangwu
192.168.1.4 zhaoliu
複雜資料型別
1 在c語言中,除了之前學到的基本資料型別 整型,浮點型,字元型 外,還有指標型別和構造型別 結構型,聯合型,列舉型 2 結構體型別,用於把不同型別的資料組合成乙個集合體,宣告格式 struct 結構名 例如 includestruct students void main 結構體的特點是 表示更豐...
複雜資料型別
1結構體 相當於是高階語言裡的類,但是他沒有方法,也就是行為,只有屬性,也就是成員,結構體相當於是自定義類 宣告struct students 當我們需要使用結要用結構體裡的類的屬性時,我們需要通過 運算子來進行呼叫,比如 students.age 2列舉它被用來存放固定的不可改變的型別,比如說,四...
複雜資料型別
1 定義形式 指向的內容的型別 指標名 2 存在空指標 3 指標變數存的是位址。提到指標便會有乙個指向關係。4 指標可以動態申請陣列new。使用後可以delete 5 陣列名是乙個常指標。它指向的位址不再改變。6 指標 指標有當前指向的位置,也就是指標存的位址,加乙個此指標所指向的內容的位元組數大小...