您的位置:首页 > 其它

hive 行转列和列转行的方法

2016-03-09 11:44 603 查看
一、行转列的使用


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

 

本文行转列的例子引自:http://my.oschina.net/repine/blog/295961
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: