Hive自定义函数UDF开发

Hive自定义函数UDF开发
Hive支持自定义函数,UDF是接受一行,输出一行。
函数通常是接受一行中某几个字段作为参数,然后返回一个值。
值得注意的是,hive的一个特别之处是数据类型很丰富,一个字段不仅仅可以是string,int,还可以是map,list。

其实最好的学习资料就是官方自带的examples了。
我这里用的是0.10版本hive,所以对于的examples在
https://github.com/apache/hive/tree/branch-0.10/contrib/src/java/org/apache/hadoop/hive/contrib/udf


我这里的例子的功能是,
接受两个字段,将第一个字段除以第二个字段返回。

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';
select norm_pt2(pt,vlen) from video;


本文链接:http://blog.csdn.net/lingerlanlan/article/details/41918941

本文作者:linger




你可能感兴趣的:(Hadoop)