似乎您可以像這樣聚合多個列:Dataset<Row> df = spark.read().textFile(inputFile);List<Row> result = df.groupBy("id") .agg(sum(df.col("price")), avg(df.col("weight"))) .collectAsList();現(xiàn)在,我想編寫自己的自定義聚合函數(shù)而不是sumor avg。我怎樣才能做到這一點?在星火文檔演示了如何創(chuàng)建一個自定義聚合功能。但是那個注冊了然后在SQL中使用,我不認為它是否可以在.agg()函數(shù)中使用。由于agg接受Column實例并且自定義聚合函數(shù)不是其中之一。
1 回答
冉冉說
TA貢獻1877條經(jīng)驗 獲得超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
提交
取消
