Spark文档描述了如何创建 untyped user defined aggregate function ( code )(又名udaf)和 strongly-typed aggregator ( code )(又名 org.apache.spark.sql.expressions.Aggregator )中。
org.apache.spark.sql.expressions.Aggregator
我知道你可以通过 spark.udf.register("udafName", udafInstance) ,然后像 spark.sql("SELECT udafName(V) as aggV FROM data") 是的。
spark.udf.register("udafName", udafInstance)
spark.sql("SELECT udafName(V) as aggV FROM data")
在sql中也有使用聚合器的方法吗?
不完全是 Aggregator api是专门为“强”类型设计的 Datasets 记住。你会注意到,这不需要 Columns 但总是对整个记录对象进行操作。
Aggregator
Datasets
Columns
这实际上不适合SQL处理模型:
Dataset[Row]
聚合器
Row
用于可以创建的sql api UserDefinedAggregateFunction 可以使用 standard methods 是的。
UserDefinedAggregateFunction