Hive自定义函数理论知识总结
1、普通UDF
单行输入(基本类型) --> 输出一个结果
继承UDF,提供evaluate()
2、复制类型的UDF:
GenericUDF 单行输入(包含复杂类型) -->输出一个结果
继承GenericUDF,init()进行初始化输入输出的格式,及合法性判断
evaluate() 实际业务逻辑处理
3、聚合函数:GenericUDAF
多行输入—单行输出
iterate()、merge()、terminatePartial()、terminate()
对应的流程:
partiall: iterate()+terminatePartial()
map()+:
partial2:merge()、terminatePartial()
combiner()+
final:merge()、terminate()
reducer()
complete:iterate()、terminate()
map()
开始输入:iterate(agg,args),读取args参数列表,处理完放入agg对象中缓存
中间根据情况来对应调用方法:
partial2 – 对应combiner阶段 – 对应merge() 和 terminatePartial()
final – 对应reducer阶段 – 对应merge()和terminate()
最终输出:Object terminate(agg),获取agg对象缓存,处理成为Object对象
4、表生成函数:GenericUDTF
单行输入 -->多行多列
initialize()进行初始化,一般来说,要定义两个list用来分别指定保存列名和值的类型
process()中实际业务逻辑处理,输出保证和值的类型一致
explode(array/map)
json_turple(json…,col1,col2…coln)