Spark Dataframe groupBy с последовательностью в качестве аргументов ключей [дубликат]

На этот вопрос уже есть ответ здесь:

Несколько агрегированных операций в одном столбце искрового фрейма данных 2 ответа

У меня есть спарк dataFrame, и я хочу агрегировать значения по нескольким ключам

Как свидетельствует искровая документация:

def groupBy (col1: String, cols: String *): GroupedData Группирует DataFrame, используя указанные столбцы, поэтому мы можем запустить агрегацию по ним

Поэтому я делаю следующее

 val keys = Seq("a", "b", "c")
 dataframe.groupBy(keys:_*).agg(...)

Intellij Idea выдает мне следующие ошибки:

расширение для неповторяющихся параметровНесоответствие типов: ожидаемый Seq [столбец], фактический Seq [строка]

Тем не менее, я могу передать несколько аргументов вручную без ошибок:

dataframe.groupBy("a", "b", "c").agg(...)

Итак, мой вопрос: как я могу сделать это программно?

Ответы на вопрос(1)

Решение Вопроса

Либо используйте столбцы сgroupBy(cols: Column*)

import org.apache.spark.sql.functions.col

val keys = Seq("a", "b", "c").map(col(_))
dataframe.groupBy(keys:_*).agg(...)

или жеhead / tail сgroupBy(col1: String, cols: String*):

val keys = Seq("a", "b", "c") 
dataframe.groupBy(keys.head, keys.tail: _*).agg(...)  

Ваш ответ на вопрос