定义一个类,继承org.apache.hadoop.hive.ql.exec.UDF,写一个方法evaluate,我之前一直以为是覆盖evaluate方法,后来才发现org.apache.hadoop.hive.ql.exec.UDF;不知道为什么,回头再读一下源码,看看是怎么调用的
package com.wecash.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class UDFconcat extends UDF {
public Text evaluate(String p1, String p2) {
return new Text( p1+p2);
}
}
然后是打包成UDFconcat.jar
在hive客户端执行
hive> add jar UDFconcat.jar;
hive> create temporary function concat as 'com.wecash.udf.UDFconcat';
调用
hive>select concat('sdfs','sdfsfsdf')
java自带udf源码路径
/home/lpf/apache-hive-1.0.1-src/ql/src/java/org/apache/hadoop/hive/ql/udf