大数据之hive:自定义函数udf,udaf,udtf的区别

Hive中有三种UDF:

    1、用户定义函数(user-defined function)UDF;

    2、用户定义聚集函数(user-defined aggregate function,UDAF);

    3、用户定义表生成函数(user-defined table-generating function,UDTF)。

UDF操作作用于单个数据行,并且产生一个数据行作为输出。大多数函数都属于这一类(比如数学函数和字符串函数)。

UDAF 接受多个输入数据行,并产生一个输出数据行。像COUNT和MAX这样的函数就是聚集函数。

UDTF 操作作用于单个数据行,并且产生多个数据行-------一个表作为输出。

简单来说:

UDF:返回对应值,一对一   | UDAF:返回聚类值,多对一 | UDTF:返回拆分值,一对多

 

实例:

1.UDF:用户定义(普通)函数,只对单行数值产生作用;

继承UDF类,添加方法 evaluate()

  /**
     * @function 自定义UDF统计最小值
     * @author John
     *
     */
    public class Min extends UDF {

        public Double evaluate(Double a, Double b) {

            if (a == null)
                a = 0.0;
            if (b == null)
                b = 0.0;
            if (a >= b) {
                return b;
            } else {
                return a;
            }
        }
    }

2.UDAF:User- Defined Aggregation Funcation;用户定义聚合函数,可对多行数据产生作用;等同与SQL中常用的SUM(),AVG(),也是聚合函数;

未完。。。。。

参考:https://blog.csdn.net/qq_42246689/article/details/84670018 ,https://www.cnblogs.com/mzzcy/p/7119423.html