用户自定义聚合函数
package doc.df
import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.sql.expressions.{MutableAggregationBuffer, UserDefinedAggregateFunction}
import org.apache.spark.sql.types.{DataType, DoubleType, LongType, StructField, StructType}
/**
* @Program: doc.df
* @Author: huangwei
* @Date: 2019/9/16 17:34
* @description: 用户自定义聚合函数
* 无类型的用户自定义函数(Untyped User-Defined Aggregate Functions)
* 实现无类型用户自定义聚合函数需要继承抽象类UserDefinedAggregateFunction,并重写该类的8个函数
*/
object UserDefindUntypedAggregate {
object MyAverage extends UserDefinedAggregateFunction{
// 1、inputSchema 定义输入数据的Schema,要求类型是StructType,它的参数是由StructField类型构成的列表
// 这里定义salary列的Schema,首先使用StructField声明salary列的名字salaryColumn,数据类型为Long,这里只输入salary这一列,所以StructField构成的列表只有一个元素
// ::是Scala的操作符,与空集合Nil操作后生成一个列表
override def inputSchema: StructType = StructType(Struc