Используйте groupBy и agg для более чем одного столбца в Spark scakla

#scala #dataframe #apache-spark #group-by #aggregate

#scala #фрейм данных #apache-spark #группировать по #агрегировать

Вопрос:

У меня есть фрейм данных с 4 столбцами. Я хочу применить GroupBy на основе 2 столбцов и хочу собрать другие столбцы в виде списка. Пример:- У меня есть DF, подобный этому

  --- ------- -------- ----------- 
|id |fName  |lName   |dob        |
 --- ------- -------- ----------- 
|1  |Akash  |Sethi   |23-05-1995 |
|2  |Kunal  |Kapoor  |14-10-1992 |
|3  |Rishabh|Verma   |11-08-1994 |
|2  |Sonu   |Mehrotra|14-10-1992 |
 --- ------- -------- ----------- 
  

и я хочу, чтобы мой вывод выглядел следующим образом:-

  --- ----------- ------- -------- -------------------- 
|id |dob        |fname           |lName               |
 --- ----------- ------- -------- -------------------- 
|1  |23-05-1995 |[Akash]         |[Sethi]             |
|2  |14-10-1992 |[Kunal, Sonu]   |[Kapoor, Mehrotra]  |
|3  |11-08-1994 |[Rishabh]       |[Verma]             |
 --- ----------- ------- -------- -------------------- 
  

Ответ №1:

Вы можете сделать что-то подобное с помощью agg

 df.groupBy("id","dob").agg(collect_list(col("fname")),collect_list(col("lName")))