一、简介
Hive是一个基于Hadoop的数据仓库工具,它可以将结构化数据映射为一张数据库表,并提供了类SQL查询的功能。collect_set是其中一个聚合函数,它可以对一组数据进行去重并且返回一个集合,常用于处理分组统计或去重查询。
二、语法
collect_set语法如下:
collect_set(expr)
collect_set(DISTINCT expr)
其中,expr是一条SQL语句的表达式,DISTINCT表示去重。
三、用法举例
1.对数据进行去重
对于以下数据表:
name age city
小明 18 北京
小红 18 北京
小刚 20 上海
小刚 22 北京
使用collect_set函数,可以对city字段进行去重操作:
SELECT collect_set(city) FROM student_info;
查询结果如下:
["北京", "上海"]
可以看到,collect_set去重后得到了城市北京和上海。
2.将分组结果返回为集合
对于以下数据表:
name age city
小明 18 北京
小红 18 北京
小刚 20 上海
小刚 22 北京
我们想要计算每个人所在的城市集合,可以使用collect_set函数进行分组统计:
SELECT name, collect_set(city) FROM student_info GROUP BY name;
查询结果如下:
name collect_set(city)
小明 ["北京"]
小红 ["北京"]
小刚 ["上海", "北京"]
可以看到,函数将每个人所在的城市集合进行了统计。
3.去重后排序
如果需要对去重后的结果进行排序,可以使用sort_array函数,例如:
SELECT sort_array(collect_set(city)) FROM student_info;
查询结果如下:
["上海", "北京"]
sort_array函数将集合元素进行排序,得到了北京和上海的正确顺序。
四、注意事项
collect_set函数为去重函数,并不会对数据进行排序。如果需要对集合进行排序,需要使用sort_array函数。
五、总结
本文介绍了Hive中collect_set函数的用法,从语法、用例等方面对其进行了详细的阐述。在实际数据处理过程中,collect_set经常被用于去重和分组统计,并配合sort_array函数进行排序。