hive/udf/udaf/udtf 的异同点

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的需求

猜你喜欢

转载自blog.csdn.net/classics_moon/article/details/85056378
今日推荐