1.udf
全称:user defined function 用户定义函数
输入与输出的特点:in:out = 1:1
应用场景:1:1操作,如加密、做数值计算、字符串处理
实现方式:继承udf类,定义一个evalute方法
2. udaf
全称:user aggregation function
In : out = n:1
应用场景:n:1操作,如求和,求平均数,最大/最小
实现方法:继承UDAF,实现UDAFEvaluator接口,
定义5个方法:
init : 定义map和reduce进程所需要的初始化变量
iterate : map阶段,迭代处理每个输入的记录
返回值是布尔类型,返回值要一直是true,如果出现false,则计算终止。
terminatePartial : map阶段,相当于combiner,做局部合并使用
其输入值是iterate的处理结果(即在init初始化的变量,而非通过返回值方式).
其输出值是merge的输入
merge : reduce阶段,迭代处理terminatePartial的输出结果
输入:terminalPartial的返回值
输出:其处理结果(init中的初始化变量),作为terminate的输入,但不是通过返回值。
terminate : reduce阶段的最终处理方法,处理merge的最终结果输出
输入:merge内部的处理结果,通过init的初始化变量传递过来
输出:即为udaf最终的输出
3. udtf
全称:user table-generator function
in : out = 1 : n
应用场景:1:n的操作,当需要将值构造成一个表时,则使用它
实现方法:lateral view explode + udf来达到udtf的需求