首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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反射导致性能损失,而且有些特性不能使用,已经被弃用了;

View Code

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;

版权声明:本文为博主原创文章

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OA91Na9ISK9jTbIuZEVy8nyw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券