admin 管理员组文章数量: 887021
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(),也是聚合函数;
聚合函数使用:
SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500
ORDER BY SUM(sales);键字HAVING总要放在GROUP BY之后,ORDER BY之前
UDAF实现有简单与通用两种方式:
a. 简单UDAF因为使用Java反射导致性能损失,而且有些特性不能使用,已经被弃用了;
b. 另一种涉及两个类:AbstractGenericUDAFResolver、GenericUDAFEvaluator;
继承UDAFResolver类,重写 getEvaluator() 方法;
继承GenericUDAFEvaluator类,生成实例给getEvaluator();
在GenericUDAFEvaluator类中,重写init()、iterate()、terminatePartial()、merge()、terminate()方
可参考:hive udaf开发入门和运行过程详解
Hive UDAF开发详解
3.UDTF:User-Defined Table-Generating Functions,用户定义表生成函数,用来解决输入一行输出多行;
继承GenericUDTF类,重写initialize(返回输出行信息:列个数,类型), process, close三方法;
可参考:hive中UDTF编写和使用
hive0.13的udtf使用例子
4、其它
删除临时函数 drop temporary function toUpper;
转载至:udf,udaf,udtf之间的区别
版权声明:本文标题:udf,udaf,udtf之间的区别 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1686514587h4549.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论