Hive自定义函数UDF开发
Hive支持自定义函数,UDF是接受一行,输出一行。
函数通常是接受一行中某几个字段作为参数,然后返回一个值。
值得注意的是,hive的一个特别之处是数据类型很丰富,一个字段不仅仅可以是string,int,还可以是map,list。
其实最好的学习资料就是官方自带的examples了。
我这里用的是0.10版本hive,所以对于的examples在
我这里的例子的功能是,
接受两个字段,将第一个字段除以第二个字段返回。
package hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
public final class NormPt2 extends UDF
{
public double evaluate(final String p,final String v)
{
if(p==null || v==null) return 0;
int pt = Integer.parseInt(p);
int vlen = Integer.parseInt(v);
if(vlen ==0) return 0;
double ratio = (double)pt/(double)vlen;
return ratio>1.0?1.0:ratio;
}
}
写好后,用eclipse导出jar包。
右键该java文件,选择export,
选择导出jar包,勾选export all output folders for checked projects(如果有其她jar依赖,会一起导出)。
完成!
jar包导入到hive中,再使用函数。
add jar /jars/NormPt2.jar;
create temporary function norm_pt2 as 'hive.udf.NormPt2';
create temporary function norm_pt2 as 'hive.udf.NormPt2';
select norm_pt2(pt,vlen) from video;
本文链接:http://blog.csdn.net/lingerlanlan/article/details/41918941
本文作者:linger