Hive自定义函数UDF开发

来源:互联网 发布:sql删除部分字段 编辑:程序博客网 时间:2024/05/22 06:38
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




0 0
原创粉丝点击