hive中的collect_list和collect_set

2020-04-24  本文已影响0人  OakesYa

需求背景

一个学生对应一个班级号和名称,此时需要统计每个班级的学生

创建数据

use db_name;
create table student_test(
    classno int COMMENT '班级名称',
    name STRING COMMENT '学生名称'
) 
comment '学生表'

insert into student_test values(1,'小明');
insert into student_test values(1,'小王');
insert into student_test values(1,'小明');
insert into student_test values(2,'小王');

造完的数据如图所示:


image.png

使用

select classno,collect_list(name) from tmp_youdb.student_test group by classno
image.png
select classno,collect_set(name) from tmp_youdb.student_test group by classno
image.png

总结

从上面可以看出collect_list和collect_set其实就是行转列,需要注意的就是行转列的时候是无序的,如需按照某个字段排序整合,可以使用sort_array

上一篇下一篇

猜你喜欢

热点阅读