hive UDF编写

hive的类SQL预发给数据挖掘工作者带来了很多便利,海量数据通过简单的sql就可以完成分析,有时候hive提供的函数功能满足不了业务需要,就需要我们自己来写UDF函数来辅助完成,下面用一个简单的例子说明过程,以及注意事项。

UDF函数其实就是一个简单的函数,执行过程就是在Hive转换成mapreduce程序后,执行java方法,类似于像Mapreduce执行过程中加入一个插件,方便扩展. UDF只能实现一进一出的操作,如果需要实现多进一出,则需要实现UDAF .

(1)首先引入jar包,我在写的时候引入了两个jar包,分别是hive-exec-0.8.0.jar hadoop-core-0.20.2.jar

(2)写一个类,继承UDF类,例如:public class CheckAddress extends UDF

(3)写一个方法,名称为evaluate,此方法支持重载,例如:

public String evaluate(String srcAddress,String countyId){return ""}

(4)写完之后,导入jar包(命令行或者eclipse中自带的export功能),jar包上传到hadoop的运行环境中

(5)导入jar包hive,命令如下:

//add jar文件

add jar /home/bixiao.zy/udf/checkaddress.jar;

//创建函数,名称自定义,as后面是jar保重的类名称

create temporary function checkaddress as  'com.taobao.logistics.CheckAddress'

//在hive sql中使用

select *from  order  where pt='XXXXXXXXX'  and checkaddress(receiver_address,receiver_county_id)='1' 

如果需要写脚本来跑定时任务,那么上面的三段必须在一个会话过程中,否则函数会没有添加进去。

$HIVE_HOME/bin/hive -u XXX-p XXXX-e   “都在这里面呵呵”

猜你喜欢

转载自iamzhongyong.iteye.com/blog/1566461