Hive 用户自定义函数UDF详解

本例自定义一个Hive UDF函数,功能是将从Hive数据仓库查询出来的字符串进行大小写转换。

 

第一步,创建java工程,添加jar包。

Ø导入Hivelib目录下的jar包以及hadoop安装目录下的hadoop-core.jar

 

第二步,新建package包,包中新建java类,该类一定要继承org.apache.hadoop.hive.ql.exec.UDF类。

第三步,在继承了UDF类中实现evaluate函数,函数名必须是evaluate,可以重载多个evaluate方法。

如下图,evaluate函数第一个参数t对应着从数据库查询出来的某列的数据,第二个参数up_or_lower是依据函数的逻辑让用户在调用时指定的。

Hive 用户自定义函数UDF详解_第1张图片

第四步,export  jar包,直接从eclipse工具中导出jar包,这步简单。

第五步,将jar包添加到linux操作系统下的文件系统中(我是在windows7中用eclipse创建java工程和导出jar包的,所以我使用了winscp工具(点击下载)从windows文件系统将jar包传送到linux文件系统,如果本身就是在linux系统下编写的java工程,就用不着这一步了)。

第六步,添加jar包到hive环境中。(三种方式,文末细讲)

第七部,创建临时函数供用户调用。

第八步,在查询语句中调用UDF函数。(六、七、八步如下图)

Hive 用户自定义函数UDF详解_第2张图片

 

这里要注意的是如果是通过hive命令添加jar包到hive环境中,当要更新这个jar包时,要退出hive环境,再重新添加jar包。

 

附:向hive环境添加jar包的三种方法。(这部分转发自:http://www.linuxidc.com/Linux/2013-04/82879.htm

1.  使用add jar path/test.jar;方法加入

该方法的缺点是每次启动Hive的时候都要从新加入,退出hive就会失效。

2.  通过设置hive的配置文件hive-site.xml 加入

在配置文件中增加配置


hive.aux.jars.path
file:///jarpath/all_new1.jar,file:///jarpath/all_new2.jar

保存即可。

该方法比第一种方法方便很多。不需要每次启动Hive执行命令加入,只是配置稍微复杂一些。

3.  在${HIVE_HOME中创建文件夹auxlib  ,然后将自定义jar文件放入该文件夹中。

个人推荐这种方法,方便快捷。

 

你可能感兴趣的:(hive)