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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

HIVE中关于collect_set与explode函数妙用

hive的复合数据类型hive中的列支持使用三类复杂的集合数据类型,即:array,map及struct,这些类型的名称是保留字,具体用法可参见该篇博文,里面有关于三类基本集合数据类型的操作实例,注:...

hive collect_set,lateral view,explode 实现行列转换

hive sql 实现行列转换

【java学习笔记】Collect:Set和LIst

这节我就不一一写了,直接贴上我的代码。里面都有我的笔记 package Collection; import java.util.ArrayList; import java.util.Arra...
  • Apolo_
  • Apolo_
  • 2016年02月29日 08:43
  • 336

db2转换hive的函数列表

  • 2014年06月24日 18:02
  • 32KB
  • 下载

php函数set_include_path()用法详解

php函数set_include_path()用法详解

Hive 运算符 & 内置函数详解 -- 适合关键词查找

说实话,该博客排版太零乱,但是不影响关键词查找。转发过来以供以后参考:http://blog.sina.com.cn/s/blog_9f488855010179pt.html 1.内置运...
  • Mike_H
  • Mike_H
  • 2015年12月10日 22:50
  • 1200

Hive 用户自定义函数UDF详解

本例自定义一个Hive UDF函数,功能是将从Hive数据仓库查询出来的字符串进行大小写转换。   第一步,创建java工程,添加jar包。                 Ø导入Hive的lib目录...

hive 窗口函数 应用场景与实战详解

hive中的窗口函数,功能非常强大,使用也比较方便,可以给我们的查询提供相当多的遍历。下面就结合具体的需求与实例,一一为大家讲解窗口函数的使用方法。1.数据准备先在hive数据库中建一张表,表的结构如...

av_opt_set函数族详解

1、av_opt_set 是设置AVOptions的参数 例如          AVFilter* filter_src_desk = avfilter_get_by_name("buffer");...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hive中列转行函数collect_set详解
举报原因:
原因补充:

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