concat(string a/col, string b/col )
返回輸入字串連線後的結果,支援任意個輸入字串
concat_ws(separator, str1, str2,...)
:
它是乙個特殊形式的 concat() 。第乙個引數剩餘引數間的分隔符。分隔符可以是與剩 餘引數一樣的字串。如果分隔符是 null ,返回值也將為 null 。這個函式會跳過分隔符引數後的任何 null 和空字串。分隔符將被加到被連線的字串之間
collect_set(col)
:
函式只接受 基本資料型別,它的主要作用是將某字段的值進行去重彙總,產生 array 型別字段。
1.資料準備
2.需求:把星座和血型一樣的人歸類到一起。結果如下
射手座,a 大海| 鳳姐
白羊座,a 孫悟空 |豬八戒
白羊座,b 宋宋
3.建立本地person_info.txt
,匯入資料
# vi /data/test/person_info.txt
孫悟空 白羊座 a
大海 射手座 a
宋宋 白羊座 b
豬八戒 白羊座 a
鳳姐 射手座 a
注意: 資料之間要使用 tab鍵隔開,否則後面插入資料有問題檢視檔案許可權,許可權不夠chmod 777 person_info.txt
4.建立 hive 表並匯入資料
--建立表
create
table person_info(
name string,
constellation string,
blood_type string)
row format delimited fields
terminated
by"\t"
;-- 載入資料(這裡採用第一種)
--追加式匯入
load
data
local inpath "/data/test/person_info.txt"
into
table person_info
-- 更新式匯入
5.按需求查詢資料
函式說明:
concat(string a/col, string b/col )
返回輸入字串連線後的結果,支援任意個輸入字串
concat_ws(separator, str1, str2,...)
:
它是乙個特殊形式的 concat() 。第乙個引數剩餘引數間的分隔符。分隔符可以是與剩 餘引數一樣的字串。如果分隔符是 null ,返回值也將為 null 。這個函式會跳過分隔符引數後的任何 null 和空字串。分隔符將被加到被連線的字串之間
collect_set(col)
:
函式只接受 基本資料型別,它的主要作用是將某字段的值進行去重彙總,產生 array 型別字段。
1.資料準備
movie
category
《疑犯追蹤》
懸疑,動作,科幻,劇情
《lie to me》
懸疑,警匪,動作,心理,劇情
《戰狼2》
戰爭,動作,災難
2.需求:將電影分類中的陣列資料展開。結果如下:
3.建立本地movie.txt
,匯入資料
# vi movie.txt
《疑犯追蹤》 懸疑 動作 科幻 劇情
《lie to me 》 懸疑 警匪 動作 心理 劇情
《戰狼2 》 戰爭 動作 災難
檢視檔案許可權,許可權不夠chmod 777 movie.txt
4.建立 hive 表並匯入資料
-- 建立電影資訊表
create
table movie_info(
movie string,
category array
)row format delimited fields
terminated
by"\t"
collection items terminated
by","
;-- 載入本地資料到hive
5.按需求查詢資料
select
movie,
category_name
from
movie_info lateral view explode(category) table_tmp as category_name;
函式說明:
lateral view:
用法
lateral view udtf(expression) tablealias as columnalias
用於和 split, explode 等 udtf 一起使用,它能夠將一列資料拆成多行資料,在此基礎上可以對拆分後的資料進行聚合。
explode(col):
將 hive 一 列 中複雜的 array 或者 map 結構拆分成多行。
Hive行轉列,列轉行
下面舉兩個例子 例一 行轉列 資料 a b 1 a c 2 a b 3 c d 4 c d 5 c d 6 轉化為 a b 1,2,3 c d 4,5,6 創表hive create table test1 col1 string,col2 string,col3 string row format...
Hive 行轉列 列轉行
並不是真正意義上的行轉列 列轉行。只是這樣叫的。concat stringa,stringb,stringc 返回輸入字串拼接後的結果,支援輸入任意多個字串 測試結果 可以連線任意多個 concat ws 分隔符 stringa,stringb 是乙個特殊的concat 第乙個引數是引數間的分隔符 ...
函式 Hive 行轉列 和 列轉行
在hive實際開發過程中,我們會遇到 行轉列 和 列轉行 的場景。比如 1 需要取 訂單號 對應的所有商品 sku號 商品 sku號 放在一列,即從table1查詢出table2 2 當商品 sku號 均在一列的時候,需要查詢每個 sku號 對應的 訂單號 即從table2查詢出table1。實現方...