您的位置:首页 > 其它

hive入门学习:UDF开发

2016-02-16 20:54 316 查看

hive入门学习:UDF开发

hive中提供了很多的内置函数,可以通过show functions来查看提供了哪些函数,可以desc function extended 函数,来查看所对应的函数具体如何使用。但是有时候难免会有一些功能无法实现,就需要我们自己来实现啦,这个时候就用到了UDF开发。
首先,开发UDF就是实现一个固定的接口,利通hadoop提供的那些变量例如intwritable,这些变量来编写java代码,添加到对应的路径下,供我们使用,下面,我们来看看如何实现一个UDF吧。
第一步:编写java代码,注意,要继承UDF这个类,然后实现一个或者多个名称为evault函数,注意这个函数必须有返回值,null也可以,绝对不可是void,最好使用hadoop提供的数据变量,保持一致的序列化机制。假若实现一个自己的小写转换函数lowerUDF,可以这样实现:
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

/**
* 1. Implement one or more methods named
* "evaluate" which will be called by Hive.
*
* 2."evaluate" should never be a void method. However it can return "null" if
* needed.
*
*/
public class LowerUDF extends UDF{

public Text evaluate(Text input){
if(null == input){
return null;
}
String inputValue = input.toString().trim() ;

if(null == inputValue){
return null ;
}

return new Text(inputValue.toLowerCase()) ;//实现小写的转换
}

}


第二部:把刚刚写好的代码打包,上传到hive/jars目录下,执行命令add jar .../jars/hiveUdf.jar ; 把这个jar添加到classpath下面,如下所示:



第三步:创建临时函数用来使用:as后面的代表的是那个class所对应的主类名字。
create temporary function my_lower as '...hive.udf.LowerUDF';




在这个时候show functions就会显示出来我们所创建的函数:



那就用一下吧:



上面我们就把大写函数转换成了小写。上面的就是最基本的UDF的编写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: