一、用户自定义UDF函数
通过spark.udf功能用户可以自定义函数。
scala> val df = spark.read.json("/input/people.json")
scala> spark.udf.register("addName",(x:String)=>"Name:"+x)
res18: org.apache.spark.sql.expressions.UserDefinedFunction = UserDefinedFunction(<function1>,StringType,Some(List(StringType)))
scala> df.createOrReplaceTempView("people")
scala> spark.sql("Select addName(name), age from people").show()
+-----------------+---+
|UDF:addName(name)|age|
+-----------------+---+
| Name:Mina| 19|
| Name:Andy| 30|
| Name:Michael| 29|
+-----------------+---+
二、用户自定义聚合函数
(1)弱类型用户自定义聚合函数
通过继承UserDefinedAggregateFunction来实现用户自定义聚合函数。下面展示一个求平均工资的自定义聚合函数。
employees.json文件如下:
{"name":"Michael", "salary":3000}
{"name":"Andy", "salary":4500}
{"name":"Justin", "salary&