Spark学习笔记:Spark UDF/UDAF

本文介绍了Spark中的用户定义函数(UDF)和用户定义聚合函数(UDAF)。首先展示了如何使用Spark UDF,包括读取CSV数据,创建DataFrame,注册临时视图,定义和调用自定义字符串拼接函数。接着,通过一个Java实现的UDAF例子,解释了如何计算分组平均数。提供了测试数据和SQL语句的示例,演示了如何对数据进行分组并计算平均值。
摘要由CSDN通过智能技术生成

目录

 

Spark UDF/UDAF

1.SparkUDF

2.Spark UDAF

(1)求平均数


Spark UDF/UDAF

1.SparkUDF

(1)测试数据: emp.csv文件
(2)定义case class
         case class Emp(empno:Int,ename:String,job:String,mgr:String,hiredate:String,sal:Int,comm:String,deptno:Int)
(3)导入emp.csv的文件
          val lineRDD = sc.textFile("/emp.csv").map(_.split(","))
(4)生成DataFrame
         val allEmp = lineRDD.map(x=>Emp(x(0).toInt,x(1),x(2),x(3),x(4),x(5).toInt,x(6),x(7).toInt))
         val empDF = allEmp.toDF
(5)注册成一个临时视图
         empDF.createOrReplaceTempView("emp")
(6)自定义一个函数,拼加字符串
         spark.sqlContext.udf.register("concatstr",(s1:String,s2:String)=>s1+"***"+s2)
(7)调用自定义函数,将ename和job这两个字段拼接在一起
         spark.sql("select concatstr(ename,job) from emp").show

测试结果

2.Spark UDAF

UDAF就是用户自定义聚合函数,比如平均值,最大最小值,累加,拼接等。

这里以求平均数为例,并用Java实现,以后应该会陆续更新一些自带函数的实现当练习。

(1)求平均数


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值