自定义函数
自定义函数包括三种 UDF、UDAF、UDTF
UDF(User-Defined-Function) 一进一出
UDAF(User- Defined Aggregation Funcation) 聚集函数,多进一出。Count/max/
min
UDTF(User-Defined Table-Generating Functions)  一进多出,如 lateral vi
ew explore()
使用方式 :在 HIVE 会话中 add 自定义函数的 jar 文件,然后创建 function 继而使用
函数
UDF实现和调用过程:
1.创建一个项目,编写一个Java类,继承org.apache.hadoop.hive.ql.exec.UDF类,类中实现evaluate
2.将项目导出为jar包,上传到服务器
3.添加jar包(在hive命令行里面执行):
add jar /root/NUDF.jar;
4.创建临时函数:
create temporary function getNation as 'cn.itcast.hive.udf.NationUDF';
5.SQL语句中调用:select id, name, getNation(nation) from beauty;
UDAF 自定义集函数
1)函数类继承org.apache.hadoop.hive.ql.exec.UDAF
2)org.apache.hadoop.hive.ql.exec.UDAFEvaluator(内部类 Evaluator
实现 UDAFEvaluator 接口)
3).Evaluator 需要实现 init、iterate、terminatePartial、merge、t
erminate 这几个函数
- init():类似于构造函数,用于 UDAF 的初始化
- iterate():接收传入的参数,并进行内部的轮转,返回 boolean
- terminatePartial():无参数,其为 iterate 函数轮转结束后,返回轮转数据,类似于 hadoop 的 Combiner
- merge():接收 terminatePartial 的返回结果,进行数据 merge 操作,其返回类型为 boolean
- terminate():返回最终的聚集函数结果