Я хочу написать пользовательскую функцию группировки и агрегации, чтобы получить заданные пользователем имена столбцов и заданную пользователем карту агрегации. Я не знаю названия столбцов и карту агрегации вверх. Я хочу написать функцию, подобную приведенной ниже. Но я новичок в Scala, и я не могу ее решить.Scala-Spark Динамически вызывать groupby и agg с значениями параметров
def groupAndAggregate(df: DataFrame, aggregateFun: Map[String, String], cols: List[String]): DataFrame ={
val grouped = df.groupBy(cols)
val aggregated = grouped.agg(aggregateFun)
aggregated.show()
}
и хотите назвать это как
val listOfStrings = List("A", "B", "C")
val result = groupAndAggregate(df, Map("D"-> "SUM", "E"-> "COUNT"), listOfStrings)
Как я могу это сделать? Может кто-нибудь мне помочь.
Большое спасибо за это. Да. 'df.groupBy (cols.head, cols.tail: _ *)' это то, о чем я не мог думать. Вторая версия - это то, что мне нужно. Остальное - только для локального тестирования. – NehaM
Для меня это работало как val key = List ("key1", "key2") val grouped = df.groupBy (cols.head, cols: _ *) – Nitin