Spark SQL>自定义函数

本文介绍了Spark SQL中自定义函数的三种类型:UDF、UDAF和UDTF,并通过实例展示了如何自定义UDF将文本数据转换为大写,以及对平均工资进行计算的需求,提供了一种自定义UDAF的代码演示。
摘要由CSDN通过智能技术生成

自定义函数分类

类似于hive当中的自定义函数, spark同样可以使用自定义函数来实现新的功能。
spark中的自定义函数有如下3类

  • 1.UDF(User-Defined-Function)
    输入一行,输出一行
  • 2.UDAF(User-Defined Aggregation Funcation)
    输入多行,输出一行
  • 3.UDTF(User-Defined Table-Generating Functions)
    输入一行,输出多行

自定义UDF

需求
有udf.txt数据格式如下:

Hello abc study small

通过自定义UDF函数将每一行数据转换成大写
select value,smallToBig(value) from t_word

代码演示

import org.apache.spark.SparkContext
import org.apache.spark.sql.{
   Dataset, SparkSession}

object UDFDemo {
   
  def main(args: Array[String]): Unit = {
   
    //1.创建SparkSession
    val spark: SparkSession = SparkSession.builder().master("local[*]").appName("SparkSQL").getOrCreate()
    //2创建sc
    val sc: SparkContext = spark.sparkContext
    //sc.setLogLevel("WARN")
    //3.读取文件
    val fileDS: Dataset[String] = spark.read.textFile("D:\\data\\udf.txt")
    fileDS.show()
    /*
    +----------+
    |     value|
    +----------+
    |helloworld|
    |       abc|
    |     study|
    | smallWORD|
    +----------+
     */
   /*
    将每一行数据转换成大写
    select value,smallToBig(value) from t_word
    */
    //注册一个函数名称为smallToBig,功能是传入一个String,返回一个大写的String
    spark.udf.register("smallToBig",(str:String) => {
   
    根据业务逻辑对数据进行处理
    str.toUpperCase()
    //str.length*10/2/2.toDouble
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值