hive udf、udaf和udtf
来源:互联网 发布:sql去除html标签 编辑:程序博客网 时间:2024/05/01 09:33
Hive UDF、UDAF和UDTF函数
背景: Hive的自定义函数无法满足实际业务的需要,所以为了扩展性,Hive官方提供了自定义函数来实现需要的业务场景
1、定义
(1)udf(user defined function): 自定义函数,特点是输入一行,输出一行
(2)udaf(user defined aggregation function):自定义聚合函数,特点是输入多行,输出一行
(3)udtf(User-Defined Table-Generating Functions):自定义拆分函数,特点是输入一行,输出多行
2、使用
(1)UDF开发和使用步骤
创建函数流程
a、自定义一个Java类
b、继承UDF类
c、重写evaluate方法
d、打成jar包
e、在hive执行add jar方法 (临时使用)
f、在hive执行创建模板函数
g、hql中使用
(2)UDAF开发和使用步骤
a、顶层UDAF类继承
org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator里面编写嵌套类evaluator实现UDAF的逻辑。
b、实现resolver :resolver负责类型检查,操作符重载
resolver通常继承
org.apache.hadoop.hive.ql.udf.GenericUDAFResolver2,但是更建议继承AbstractGenericUDAFResolver,
隔离将来hive接口的变化。
GenericUDAFResolver和GenericUDAFResolver2接口的区别是后面的允许evaluator实现可以访问更多的信息,
例如DISTINCT限定符,通配符FUNCTION(*)。
c、实现evaluator :evaluator真正实现UDAF的逻辑
所有evaluators必须继承抽象类
org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator。予类必须实现它的一些抽象方法,
实现UDAF的逻辑。
d、打成jar包
e、在hive执行add jar方法 (临时使用)
f、在hive执行创建模板函数
g、hql中使用
(3)UDTF开发和使用
a、 继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF,实现initialize, process, close三个方法。
b、UDTF首先会调用initialize方法,此方法返回UDTF的返回行的信息(返回个数,类型)。
c、初始化完成后,会调用process方法,真正的处理过程在process函数中,在process中,每一次forward()调用产生一行;
如果产生多列可以将多个列的值放在一个数组中,然后将该数组传入到forward()函数。
最后close()方法调用,对需要清理的方法进行清理。
d、打成jar包
e、在hive执行add jar方法 (临时使用)
f、在hive执行创建模板函数
g、hql中使用
注意:UDTF有两种使用方法,一种直接放到select后面,一种和lateral view一起使用。
- hive udf、udaf和udtf
- HIVE UDF/UDAF/UDTF
- hive udf \udaf\udtf
- hive中UDF、UDAF和UDTF使用
- hive中UDF、UDAF和UDTF使用
- hive中UDF、UDAF和UDTF使用
- hive中UDF、UDAF和UDTF使用
- hive中UDF、UDAF和UDTF使用
- hive中UDF、UDAF和UDTF使用
- hive中UDF、UDAF和UDTF详解
- hive中UDF、UDAF和UDTF使用
- Hive中UDF、UDAF和UDTF使用
- hive 自定义UDF UDAF UDTF
- hive udf,udaf,udtf详解
- Hive自定义UDF UDAF UDTF
- Hive UDF UDTF UDAF 函数
- hive 中udf,udaf,udtf
- Hive的UDF、UDAF、UDTF
- 再谈面向对象
- java7和java8的垃圾回收
- 计算机视觉工具、代码合集
- Spring AOP Redis
- wordpress更改默认端口的方法
- hive udf、udaf和udtf
- 网狐6603开发房卡麻将源码(手机端+服务器+数据库)全套源码
- jdk环境变量配置
- 洛谷 P2401 不等数列
- 第十一周oj题目输出星座名称
- 1619-7 张良 十一月十一号总结 [连续第四十二天]
- mock模拟前后端分离
- 牛顿迭代法求根——C语言
- spark rdd详解及开发优化