首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

hive UDF编纂

2012-09-23 
hive UDF编写hive的类SQL预发给数据挖掘工作者带来了很多便利,海量数据通过简单的sql就可以完成分析,有时

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 ? “都在这里面呵呵”

?

热点排行