Scala-Spark Groupby dynamisch aufrufen und mit Parameterwerten agg

Ich möchte eine benutzerdefinierte Gruppierungs- und Aggregatfunktion schreiben, um benutzerdefinierte Spaltennamen und benutzerdefinierte Aggregationszuordnungen abzurufen.Ich kenne die Spaltennamen und die Aggregationszuordnung nicht im Voraus. Ich möchte eine Funktion schreiben, die der folgenden ähnlich ist. Aber ich bin neu in Scala und kann es nicht lösen.

def groupAndAggregate(df: DataFrame,  aggregateFun: Map[String, String], cols: List[String] ): DataFrame ={
  val grouped = df.groupBy(cols)
  val aggregated = grouped.agg(aggregateFun)
  aggregated.show()
}

und wollen es wie @ nenn

val listOfStrings =  List("A", "B", "C")
val result = groupAndAggregate(df, Map("D"-> "SUM", "E"-> "COUNT"), listOfStrings)

Wie kann ich das machen? Kann mir bitte jemand helfen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage