hive中的行轉列和列轉行
一、行轉列的使用
1、問題
hive如何將
a b 1 a b 2 a b 3 c d 4 c d 5 c d 6
變為:
a b 1,2,3 c d 4,5,6
2、資料
test.txt
a b 1 a b 2 a b 3 c d 4 c d 5 c d 6
3、答案
1.建表
drop table tmp_jiangzl_test; create table tmp_jiangzl_test ( col1 string, col2 string, col3 string ) row format delimited fields terminated by '\t' stored as textfile; load data local inpath '/home/jiangzl/shell/test.txt' into table tmp_jiangzl_test;
2.處理
select col1,col2,concat_ws(',',collect_set(col3)) from tmp_jiangzl_test group by col1,col2;
二、列轉行
1、問題
hive如何將
a b 1,2,3 c d 4,5,6
變為:
a b 1 a b 2 a b 3 c d 4 c d 5 c d 6
2、答案
1.建表
drop table tmp_jiangzl_test; create table tmp_jiangzl_test ( col1 string, col2 string, col3 string ) row format delimited fields terminated by '\t' stored as textfile; 處理:
select col1, col2, col5
from tmp_jiangzl_test a
lateral view explode(split(col3,',')) b AS col5