005.hive列转行 (collect_set() 去重)

原创
2014/07/29 18:15
阅读数 3.9W

一、问题

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;

四、关于我们


本文author:数据的开拓者成员之一 江中炼

QQ群:248087140 

座右铭: 

你在你擅长的领域牛逼, 

并带着一群小白变牛逼,

别人会发自内心的去尊重你的。 

--可点击加入我们



展开阅读全文
打赏
0
2 收藏
分享
加载中
片刻博主

引用来自“Anna20150709”的评论

楼主有在吗?
请问一下:
对于a b 1,2,3 中的1,2,3是否能按一定顺序排列,或是顺序或是倒序?

引用来自“片刻”的评论

是可以滴。 给你个case, 如下: select sort_array(array(3,1,2)) from tmp.tmp_jzl_20140725_test11; 1,2,3 => 1 / 2 / 3

引用来自“zdt_1988”的评论

困惑好久的排序问题 终于解决啦 谢谢~😁
问题是久了点。哈哈 解决就好
2018/02/26 15:33
回复
举报

引用来自“Anna20150709”的评论

楼主有在吗?
请问一下:
对于a b 1,2,3 中的1,2,3是否能按一定顺序排列,或是顺序或是倒序?

引用来自“片刻”的评论

是可以滴。 给你个case, 如下: select sort_array(array(3,1,2)) from tmp.tmp_jzl_20140725_test11; 1,2,3 => 1 / 2 / 3
困惑好久的排序问题 终于解决啦 谢谢~😁
2018/02/07 11:16
回复
举报
片刻博主

引用来自“Anna20150709”的评论

楼主有在吗?
请问一下:
对于a b 1,2,3 中的1,2,3是否能按一定顺序排列,或是顺序或是倒序?
是可以滴。 给你个case, 如下: select sort_array(array(3,1,2)) from tmp.tmp_jzl_20140725_test11; 1,2,3 => 1 / 2 / 3
2015/08/14 14:56
回复
举报
楼主有在吗?
请问一下:
对于a b 1,2,3 中的1,2,3是否能按一定顺序排列,或是顺序或是倒序?
2015/08/12 17:12
回复
举报
更多评论
打赏
4 评论
2 收藏
0
分享
返回顶部
顶部