You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark Scala中限制collect_list结果的元素数量

解决Spark Scala中collect_list结果截断至最多30个元素的问题

直接使用Spark内置的slice函数就能实现需求,它可以对数组进行截取,保留前N个元素(数组长度不足时原样保留)。修改后的代码如下:

db.groupBy("ids")
  .agg(collect_list("names") as "alias")
  .select(
    $"ids",
    slice($"alias", 1, 30).alias("alias")
  )

关键说明:

  • slice函数的参数规则:第一个参数是目标数组列,第二个是起始位置(Spark中数组索引从1开始),第三个是要截取的元素数量。
  • 该逻辑会自动适配两种场景:
    • 当alias的元素数量≤30时,返回原数组
    • 当元素数量>30时,仅保留前30个元素

内容的提问来源于stack exchange,提问作者Jericho Sims

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 12:06:42