Кажется, что вы можете объединить несколько столбцов следующим образом:
Dataset<Row> df = spark.read().textFile(inputFile);
List<Row> result = df.groupBy("id")
.agg(sum(df.col("price")), avg(df.col("weight")))
.collectAsList();
Теперь я хочу написать свою собственную функцию агрегирования вместо sum
или avg
. Как я могу это сделать?
В документации Spark показано, как создать пользовательскую функцию агрегирования. Но этот зарегистрирован и затем используется в SQL, и я не думаю, что его можно использовать в функции .agg()
. Так как agg
принимает Column
экземпляров и пользовательская функция агрегирования не одна.