Scala-Spark Llama dinámicamente groupby y agg con valores de parámetros
Quiero escribir una función de agrupación y agregación personalizada para obtener los nombres de columna especificados por el usuario y el mapa de agregación especificado por el usuario.No sé los nombres de columna y el mapa de agregación por adelantado. Quiero escribir una función similar a algo como a continuación. Pero soy nuevo en Scala y no puedo resolverlo.
def groupAndAggregate(df: DataFrame, aggregateFun: Map[String, String], cols: List[String] ): DataFrame ={
val grouped = df.groupBy(cols)
val aggregated = grouped.agg(aggregateFun)
aggregated.show()
}
y quiero llamarlo así
val listOfStrings = List("A", "B", "C")
val result = groupAndAggregate(df, Map("D"-> "SUM", "E"-> "COUNT"), listOfStrings)
¿Cómo puedo hacer esto? ¿Alguien puede ayudarme por favor?