Scala-Spark Динамический вызов groupby и агг со значениями параметров
Я хочу написать пользовательскую функцию группировки и агрегирования, чтобы получить указанные пользователем имена столбцов и указанную пользователем карту агрегации.Я не знаю названия столбцов и карту агрегации заранее, Я хочу написать функцию, похожую на что-то вроде ниже. Но я новичок в Scala, и я не могу решить это.
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)
Как я могу это сделать? Кто-нибудь может мне помочь.