Hive自定义函数
来源:互联网 发布:仁和知柏地黄丸浓缩丸 编辑:程序博客网 时间:2024/06/05 03:40
hive内部包含了很多函数,但是这些可能仍不能满足我们的业务,hive提供了一些扩展,我们可以实现自己的函数。总体来说可以实现3类
(1)UDF:普通的自定义函数。接受单行输入,并产生单行输出
(2)UDAF:用户定义聚集函数(User-defined aggregate function)。接受多行输入,并产生单行输出。比如MAX,COUNT函数
(3)UDTF:用户定义表生成函数(User-defined table-generating function)。接受单行输入,并产生多行输出(即一个表)。
UDF
hive为我们提供了一个类UDF,继承该类然后重写evaluate方法,然后打成jar文件,在CLI模式下可以加载该jar,创建自己的函数
1 自定义类实现自己的业务逻辑
比如:将年龄转换成相关的字符串操作
2 然后打成jar文件,放到hive的classpath下,hive启动后会自动加载该类
3 可以再cli下使用该类自定义函数
create temporary function changeAgeToType as 'com.hive.udf.ChangeAgeToType
4 使用该函数
注意:(1)如果当前hive已经启动,可以动态加载该jar文件
hive> add jar /usr/local/udf/changeAgeToType.jar
(2)0.13版本之后可以讲某个函数永久的注册到当前数据库或者某一个数据库中
hive> create function db_name.changeAgeToType as 'com.hive.udf.ChangeAgeToType
(3)0.13版本之后可以在创建函数时指定该jar文件,无需动态加载该jar
hive> create temporary function changeAgeToType using jar 'hdfs:///hive/udf/changeAgeToType.jar
UDAF
使用自定义聚合函数需要我们实现类UDAFEvaluator,然后重写内部几个函数,具体的这些函数如何运行,可以参见Hive自定义函数
下面是我的自定义的求所有人员年龄类,各个函数都有响应的说明。
注意:
1.需要import org.apache.hadoop.hive.ql.exec.UDAF以及org.apache.hadoop.hive.ql.exec.UDAFEvaluator,这两个包都是必须的
2.函数类需要继承UDAF类,内部类Evaluator实现UDAFEvaluator接口
3.Evaluator需要实现 init、iterate、terminatePartial、merge、terminate这几个函数
1)init函数类似于构造函数,用于UDAF的初始化
2)iterate接收传入的参数,并进行内部的轮转。其返回类型为boolean
3)terminatePartial无参数,其为iterate函数轮转结束后,返回轮转数据,iterate和terminatePartial类似于hadoop的Combiner
4)merge接收terminatePartial的返回结果,进行数据merge操作,其返回类型为boolean
5)terminate返回最终的聚集函数结果
然后可以打成jar文件,自定义聚合函数
UDTF
这个函数用的不是太多,暂时不详述。
- 自定义-Hive自定义函数
- Hive 自定义函数函数
- Hive 自定义函数函数
- HIVE中的自定义函数
- hive用户自定义函数
- HIVE中的自定义函数 .
- HIVE中的自定义函数
- HIVE 自定义函数 UDF
- HIVE中的自定义函数
- hive中的自定义函数
- Hive自定义函数
- Hive自定义函数
- Hive自定义函数
- HIVE 自定义函数
- hive 自定义函数扩展
- Hive--自定义函数
- HIVE自定义函数类型
- Hive中自定义函数
- 算法导论第六章-堆排序
- 软考之路--从生活着手,看PV如何操作
- linux命令
- Instruction (hdu 5083)
- servlet请求转发与重定向的区别------用生活实例来形象说明两者的区别
- Hive自定义函数
- 【Leetcode】Traping Rain Water (Water)
- [ACM] HDU 5083 Instruction (模拟)
- boost库学习总结
- UVA - 11020(优势人群)
- java回调机制
- HttpClient 教程 (一)
- 第六周工作周报
- 1410260946-hd-Wooden Sticks