Hive自定义函数UDF

自定义函数
自定义函数包括三种 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():返回最终的聚集函数结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值