Hive自定义函数

一、UDF

背景及意义:

系统内置函数无法解决所有的实际业务问题,需要开发者自己编写函数实现自身的业务实现诉求。

应用场景非常多,面临的业务不同导致个性化实现很多,故udf很需要。

函数扩展得到解决,极大丰富了可定制化的业务需求。

IO要求-要解决的问题:

in:out=1:1,只能输入一条记录当中的数据,同时返回一条处理结果。

属于最常见的自定义函数,像cos,sin,substring,instr等均是如此要求。

实现步骤(java自定义创建udf类)

  1. 自定义一个java类
  2. 继承UDF类
  3. 约定俗成的重写evaluate方法
  4. 打包类所在项目成一个all-in-one的jar包并上传到hive所在机器
  5. 在hive中执行add jar操作,将jar加载到classpath中。
  6. 在hive中创建模板函数,使得后边可以使用该函数名称调用实际的udf函数

hive sql中像调用系统函数一样使用udf函数

二、UDAF

实现步骤:

  1. 自定义一个java类
  2. 继承UDAF类
  3. 内部定义一个静态类,实现UDAFEvaluator接口
  4. 实现方法init,iterate,terminatePartial,merge,terminate共5个方法.

  • 在hive中执行add jar操作,将jar加载到classpath中。
  • 在hive中创建模板函数,使得后边可以使用该函数名称调用实际的udf函数
  • hive sql中像调用系统函数一样使用udaf函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值