为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Java 实现要在 RelationalGroupedDataset.agg()

使用 Java 实现要在 RelationalGroupedDataset.agg()

ITMISS 2021-12-10 17:05:15
似乎您可以像这样聚合多个列: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


查看完整回答
反对 回复 2021-12-10
  • 1 回答
  • 0 关注
  • 265 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号