collect_set:收集为去重集合
速查结论
collect_set(expr) 是 Spark SQL 中用于将一组行的表达式值收集为去重后的唯一元素集合的聚合函数。
语法
collect_set(expr)
参数说明
| 参数 | 说明 |
|---|---|
| expr | 任意表达式 |
示例
> SELECT collect_set(col) FROM VALUES (1), (2), (1) AS tab(col);
[1,2]
常见报错与避坑指南
- 非确定性顺序:该函数是非确定性的,收集结果的顺序取决于行的顺序,在 shuffle 之后可能不确定。如果对顺序有明确要求,可以使用
sort_array(collect_set(expr))对结果排序。 - 自动去重:与
collect_list不同,collect_set会自动去除重复元素,返回的数组中每个值只出现一次。 - 内存压力:虽然去重后体积小于
collect_list,但在大数据量场景下仍可能产生较大数组,需注意内存使用。
Since: 2.3.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
