天天看點

【spark實戰系列】Spark SQL 中如何使用 UDAF

什麼是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
           

繼續閱讀