什麼是UDAF?
UDAF(User Defined Aggregate Function),即使用者定義的聚合函數,聚合函數和普通函數的差別是什麼呢,普通函數是接受一行輸入産生一個輸出,聚合函數是接受一組(一般是多行)輸入然後産生一個輸出,即将一組的值想辦法聚合一下。類似于sum操作,spark的udf使用看這裡
直接看下面的demo,計算1-10的平均值,代碼也比較簡單
package spark
import org.apache.spark.sql.expressions.{MutableAggregationBuffer, UserDefinedAggregateFunction}
import org.apache.spark.sql.types.{DataType, IntegerType, StructField, StructType}
import org.apache.spark.sql.{Dataset, Row, SparkSession}
import java.lang
/**
* spark的UDAF使用
*/
object UDAF {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.appName("UDAFDemo")
.master("local[1]")
.getOrCreate()
val ds: Dataset[lang.Long] = spark.range(1,10)
ds.createTempView("test")
spark.udf.re