【问题标题】:How to aggregate column values into array after groupBy?如何在groupBy之后将列值聚合到数组中?
【发布时间】:2020-06-14 19:54:03
【问题描述】:

我想按名称分组并将颜色添加到数组中,我已经完成了以下操作,但它无济于事

val uid = flatten(collect_list($"color")).alias("color")
val df00=  df_a.groupBy($"name")
               .agg(color)

我有一个具有以下值的数据框

    ---------------
    |name  |color |
    ---------------
    |gaurav| red  | 
    |harsh |black | 
    |nitin |yellow|  
    |gaurav|white | 
    |harsha|blue  |  
    ---------------

我想按名称分组并使用 scala 将颜色值存储到数组中,以获得如下结果:

    ----------------------
    |name  |   color     |
    ----------------------
    |gaurav| [red,white] | 
    |harsh | [black,blue]| 
    |nitin | [yellow]    | 
    ----------------------

【问题讨论】:

  • 你使用的 spark 版本是什么?
  • @AnandSai 我使用的是 spark 版本 2.3.0.2.6.5.0-292
  • df.groupBy($"name").agg(collect_list($"color")) 不是你想要的吗?

标签: arrays scala dataframe apache-spark


【解决方案1】:

使用collect_list 代码如下:

import org.apache.spark.sql.functions._
df.groupBy($"name").agg(collect_list($"color").as("color_list")).show

希望对你有帮助!!

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 2017-12-25
    • 2016-02-09
    • 2023-01-23
    相关资源
    最近更新 更多