似乎您可以像这样聚合多个列:Dataset<Row> df = spark.read().textFile(inputFile);List<Row> result = df.groupBy("id") .agg(sum(df.col("price")), avg(df.col("weight"))) .collectAsList();现在,我想编写自己的自定义聚合函数而不是sumor avg。我怎样才能做到这一点?在星火文档演示了如何创建一个自定义聚合功能。但是那个注册了然后在SQL中使用,我不认为它是否可以在.agg()函数中使用。由于agg接受Column实例并且自定义聚合函数不是其中之一。
1 回答

冉冉说
TA贡献1877条经验 获得超1个赞
如果您有一个GeometricMean扩展类UserDefinedAggregationFunction,那么您可以像这样使用它(取自https://docs.databricks.com/spark/latest/spark-sql/udaf-scala.html):
// Create an instance of UDAF GeometricMean.
val gm = new GeometricMean
// Show the geometric mean of values of column "id".
df.groupBy("group_id").agg(gm(col("id")).as("GeometricMean")).show()
应该很容易将其转换为 Java
添加回答
举报
0/150
提交
取消