Hive中列转行函数collect_set详解

原创 2017年10月11日 23:39:30
Hive中列转行函数collect_set详解

--1.创建测试表
create table test1011
(
   c1  string,
   c2  string,
   c3  string
)
row format delimited fields terminated by ' '
stored as textfile;

--2.添加测试文件和数据
test20171011.txt
a b 1
a b 2
a b 3
c d 4
c d 5
c d 6

--3.加载数据
--使用场景: 通过hue文件上传
load data inpath '/user/pabrdm/test20171011.txt' into table pabrdm.test1011;  
--使用场景: linux后台执行         
--load data local inpath '/user/pabrdm/test20171011.txt' into table pabrdm.test1011;  
有local表示从本地文件系统加载(文件会被拷贝到hdfs中)
无local表示从hdfs中加载数据(注意:文件直接被移动,而不是拷贝)
overwrite 表示是否覆盖表中数据(或指定分区的数据)(没有overwrite 会直接append,而不会滤重)

--4.查询
select * from test1011;
select c1,c2,collect_set(c3) as c3
  from test1011
 group by c1,c2;
 
结果如下:
c1 c2 c3
a b ["1","2","3"]
c d ["4","5","6"]

--5.补充字符串连接函数:concat_ws  带分隔符
它是一个特殊形式的concat(),第一个参数为分隔符。
这个函数会跳过分隔符参数后的任何null和空字符串。
分隔符将被加到被连接的字符串之间,如果分隔符是null,返回值也将为null。

select c1,c2,concat_ws(',',collect_set(c3)) as c3
from test1011
group by c1,c2;
c1 c2 c3
a b 1,2,3
c d 4,5,6

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq646748739/article/details/78209843

hive-列转行和行转列

1. 假设我们在hive中有两张表,其中一张表是存用户
  • JThink_
  • JThink_
  • 2014年08月26日 21:27
  • 45585

hive 行转列和列转行的方法

一、行转列的使用 1、问题 hive如何将 a       b       1 a       b       2 a       b       3 c       d       4 c  ...
  • buster2014
  • buster2014
  • 2016年01月05日 12:15
  • 7223

hive之实现列转行

样例: select * from tab1 limit 10; 结果: id  num a  1 a  2 a  3 b  4 b  3 ···...
  • sunlei1980
  • sunlei1980
  • 2015年06月20日 16:50
  • 3565

spark concat_ws,collect_set

hive > select product_id, concat_ws('_',collect_set(promotion_id)) as promotion_ids from product_pro...
  • zhuiqiuuuu
  • zhuiqiuuuu
  • 2017年05月30日 11:19
  • 1726

Hive通用型自定义聚合函数(UDAF)

在使用hive进行数据处理时,经常会用到group by语法,但对分组的操作,hive没有mysql支持得好: group_concat([DISTINCT] 要连接的字段 [Order BY AS...
  • Desilting
  • Desilting
  • 2015年05月05日 17:26
  • 12314

Hive 的collect_set使用详解

Hive 的collect_set使用详解
  • liyantianmin
  • liyantianmin
  • 2015年09月07日 10:30
  • 23506

hive-列转行和行转列

http://blog.csdn.net/jthink_/article/details/38853573 1. 假设我们在hive中有两张表,其中一张表是存用户基本信息,另一张表是存用户的...
  • buster2014
  • buster2014
  • 2015年12月02日 07:08
  • 1068

hive 行转列和列转行的方法

一、行转列的使用 1、问题 hive如何将 a       b       1 a       b       2 a       b       3 c       d   ...
  • comchen
  • comchen
  • 2016年03月09日 11:44
  • 1943

Hive--行转列(Lateral View explode())和列转行(collect_set() 去重)

1.行转列 1.1 问题引入: 如何将 a       b       1,2,3 c       d       4,5,6 变为: a       b       1 a       b   ...
  • Xw_Classmate
  • Xw_Classmate
  • 2016年03月11日 11:29
  • 7876

HIVE中关于collect_set与explode函数妙用

hive的复合数据类型hive中的列支持使用三类复杂的集合数据类型,即:array,map及struct,这些类型的名称是保留字,具体用法可参见该篇博文,里面有关于三类基本集合数据类型的操作实例,注:...
  • sinat_29508201
  • sinat_29508201
  • 2015年08月31日 19:30
  • 13515
收藏助手
不良信息举报
您举报文章:Hive中列转行函数collect_set详解
举报原因:
原因补充:

(最多只允许输入30个字)