1.函式說明
explode(col):將 hive 一列中複雜的 array 或者 map 結構拆分成多行。
lateral view:
用法:lateral view udtf(expression) tablealias as columnalias
解釋:用於和 split, explode 等 udtf 一起使用,它能夠將一列資料拆成多行資料,在此
基礎上可以對拆分後的資料進行聚合。
2.資料準備
move_name
category
《疑犯追蹤》
懸疑,動作,科幻,劇情
《lie to me》
懸疑,警匪,動作,心理,劇情
《戰狼 2》
戰爭,動作,災難
3.需求
將電影分類中的陣列資料展開。結果如下:
move_name
category_name
《疑犯追蹤》
懸疑《疑犯追蹤》
動作《疑犯追蹤》
科幻《疑犯追蹤》
劇情《lie to me》
懸疑《lie to me》
警匪《lie to me》
動作《lie to me》
心理《lie to me》
劇情《戰狼 2》
戰爭《戰狼 2》
動作《戰狼 2》
災難5.建立 hive 表並匯入資料
create
table movie_info( movie string, category array
)row format delimited fields
terminated
by"\t" collection items terminated
by","
;
load
data
local inpath "file_path"
into
table movie_info;
6.按需求查詢資料
select movie,category_name from movie_info lateral view explode(category) table_tmp as category_name;
hive 列轉行 HQL 行轉列,列轉行
1 相關函式 concat string a col,string b col 返回輸入字串連線後的結果,支援任意個輸入字串 concat ws separator,str1,str2,它是乙個特殊形式的 concat 第乙個引數剩餘引數間的分隔符。分隔符可以是與剩餘引數一樣的字串。如果分隔符是 n...
hive 行專列 列轉行
1.假設我們在hive中有兩張表,其中一張表是存使用者基本資訊,另一張表是存使用者的位址資訊等,表資料假設如下 user basic info idname1a 2b3c 4duser address name address aadd1 aadd2 badd3 cadd4 dadd5 我們可以看到...
hive行專列,列轉行
1.假設我們在hive中有兩張表,其中一張表是存使用者基本資訊,另一張表是存使用者的位址資訊等,表資料假設如下 user basic info idname1a 2b3c 4duser address name address aadd1 aadd2 badd3 cadd4 dadd5 我們可以看到...