一、行转列的使用
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
a?????? b?????? 1?
a?????? b?????? 2?
a?????? b?????? 3?
c?????? d?????? 4?
c?????? d?????? 5?
c?????? d?????? 6
?
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;
?
二、列转行
?
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
?
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
?
本文行转列的例子引自:http://my.oschina.net/repine/blog/295961
原文:http://daizj.iteye.com/blog/2255033