hive列转行
一、问题
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
二、数据
test.txt
cat column_row.txt a,b,1 a,b,2 a,b,3 c,d,4 c,d,5 c,d,6
三、答案
1. 建表
create table tmp.column_row ( col1 string, col2 string, col3 string ) row format delimited fields terminated by ',' stored as textfile;
2. 载入数据
load data local inpath '/tmp/column_row.txt' into table tmp.column_row;
3. 处理
select col1,col2,concat_ws(',',collect_set(col3)) from tmp.column_row group by col1,col2;
结果是:
a b 2 ,3 ,1 c d 6,4 ,5