跳到主要内容

array_agg:收集元素为数组

速查结论

array_agg(expr) 是 Spark SQL 中用于**将一组行的表达式值收集为非唯一元素列表(数组)**的聚合函数。

语法​

array_agg(expr)

参数说明​

参数说明
expr任意表达式

示例​

> SELECT array_agg(col) FROM VALUES (1), (2), (1) AS tab(col);
[1,2,1]

常见报错与避坑指南​

  • 非确定性顺序:该函数是非确定性的,收集结果的顺序取决于行的顺序,在 shuffle 后可能不确定。如果对顺序有要求,应先在子查询中排序后再聚合。
  • 内存压力:当聚合的数据量非常大时,array_agg 可能产生巨大的数组导致 OOM。对于大数据量场景,考虑是否真的需要将所有值收集到单个数组中。
  • 与 collect_list 的关系:array_agg 和 collect_list 功能等价,都是收集非唯一元素。可根据项目代码风格选择使用。

Since: 1.4.0

微信公众号二维码关注公众号
交流微信二维码加群交流
赞赏二维码赞赏

你可能还想看