Как агрегировать значения столбцов в массив после groupBy? - PullRequest
1 голос
/ 02 марта 2020

Я хочу сгруппировать по имени и добавить цвет в массив, я сделал следующее, но это не помогло

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]    | 
    ----------------------

1 Ответ

1 голос
/ 02 марта 2020

Использование collect_list Код показан ниже:

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

Надеюсь, это поможет !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...