sparkSQL 自定义UDAF函数(强类型的方式)spark3.x

本文将深入探讨如何在SparkSQL 3.x中使用强类型方式定义用户自定义聚合函数(UDAF)。我们将涵盖必要的步骤和示例,帮助你理解如何扩展Spark的功能来满足特定的聚合需求。
摘要由CSDN通过智能技术生成
package sparksql.day01

import org.apache.log4j.{Level, Logger}
import org.apache.spark.SparkConf
import org.apache.spark.sql.{SparkSession, functions}
import org.apache.spark.sql.expressions.Aggregator


object sparkUDAF1 {

  def main(args: Array[String]): Unit = {
    Logger.getLogger("org").setLevel(Level.ERROR)
           System.setProperty("hadoop.home.dir", "D:\\spark")
    val conf = new SparkConf().setAppName("spakrsql").setMaster("local[*]")


    val spark = SparkSession.builder().config(conf).getOrCreate()


    val df = spark.read.json("data/user.json")
    //df.show()

    df.createOrReplaceTempView("user")


   spark.udf.register("ageavg",functions.udaf( new MyAgeAVGUDAF()))


    spark.sql("select ageavg(age) from user").show()
   // spark.sql("select avg(age) from user").show()

spark.stop()
  }
//  自定义聚合函数类:计算年龄的平均值
  //继承来自Aggregator
  //
  //重写方法ctrl+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值