hive udf、udaf、udtf使用区分
来源:互联网 发布:网约车有哪些软件 编辑:程序博客网 时间:2024/05/01 14:03
UDF:一进一出
实现方法:
1. 继承UDF类
2. 重写evaluate方法
3. 将该java文件编译成jar
4. 在终端输入如下命令:
hive> add jar test.jar;hive> create temporary function function_name as 'com.hrj.hive.udf.UDFClass';hive> select function_name(t.col1) from table t;hive> drop temporary function function_name;
UDAF:多进一出
实现方法:
1,用户的UDAF必须继承了org.apache.hadoop.hive.ql.exec.UDAF;
2,用户的UDAF必须包含至少一个实现了org.apache.hadoop.hive.ql.exec的静态类,诸如实现了 UDAFEvaluator
3,一个计算函数必须实现的5个方法的具体含义如下:
init():主要是负责初始化计算函数并且重设其内部状态,一般就是重设其内部字段。一般在静态类中定义一个内部字段来存放最终的结果。
iterate():每一次对一个新值进行聚集计算时候都会调用该方法,计算函数会根据聚集计算结果更新内部状态。当输 入值合法或者正确计算了,则 就返回true。
terminatePartial():Hive需要部分聚集结果的时候会调用该方法,必须要返回一个封装了聚集计算当前状态的对象。
merge():Hive进行合并一个部分聚集和另一个部分聚集的时候会调用该方法。
terminate():Hive最终聚集结果的时候就会调用该方法。计算函数需要把状态作为一个值返回给用户。
4.部分聚集结果的数据类型和最终结果的数据类型可以不同。
UDTF:一进多出
实现方法:
1. 继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF
2.initialize():UDTF首先会调用initialize方法,此方法返回UDTF的返回行的信息(返回个数,类型)
3.process:初始化完成后,会调用process方法,真正的处理过程在process函数中,在process中,每一次forward() 调用产生一行;如果产生多列 可以将多个列的值放在一个数组中,然后将该数组传入到forward()函数
4.最后close()方法调用,对需要清理的方法进行清理
0 0
- 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 UDAF UDTF
- Hive UDF UDTF UDAF 函数
- hive udf、udaf和udtf
- 通过反射获取,修改对象变量
- Git服务器搭建全过程
- 10个顶级的CSS UI开源框架
- ANR log 日志的抓取
- hdu 5464(dp)
- hive udf、udaf、udtf使用区分
- poj1942 Paths on a Grid(组合数)
- AngularJS 用 $http.jsonp 方法跨域请求数据错误的问题
- 手动查杀病毒的第一课
- 移动端多设备适配想到的
- Java集合的小抄 Java初学者必备
- EventBus使用详解
- 实例变量的修饰符
- jersey client返回list