目录
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实现,以后应该会陆续更新一些自带函数的实现当练习。