-
版本
hive-1.1.0-cdh5.7.0
下载hive-1.1.0-cdh5.7.0-src源码 -
解压
[root@hadoop001 tar]# tar -zxvf hive-1.1.0-cdh5.7.0-src.tar.gz -C /home/hadoop/source/
- 自定义udf
在ql/src/java/org/apache/hadoop/hive/ql/udf 目录下
package org.apache.hadoop.hive.ql.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
public class SayHi extends UDF{
public String evaluate(String input){
return "Hi: " + input;
}
}
- 修改FunctionRegistry.java
在ql/src/java/org/apache/hadoop/hive/ql/exec目录下
vi FunctionRegistry.java
...
import org.apache.hadoop.hive.ql.udf.SayHi;
...
system.registerUDF("SayHi", SayHi.class, false);
...
- 编译
编译环境配置看以前文章hadoop编译环境
有可能网络不好需要多试几次,等待时间较长
[hadoop@hadoop001 hive-1.1.0-cdh5.7.0]$ mvn clean package -DskipTests -Phadoop-2 -Pdist
编译成功后会在packaging/target 路径下生成以下包
drwxr-xr-x. 2 root root 28 Apr 17 09:53 antrun
drwxr-xr-x. 3 root root 44 Apr 17 09:54 apache-hive-1.1.0-cdh5.7.0-bin
-rw-r--r--. 1 root root 105537224 Apr 17 09:54 apache-hive-1.1.0-cdh5.7.0-bin.tar.gz
-rw-r--r--. 1 root root 12610957 Apr 17 09:54 apache-hive-1.1.0-cdh5.7.0-jdbc.jar
-rw-r--r--. 1 root root 12528214 Apr 17 09:54 apache-hive-1.1.0-cdh5.7.0-src.tar.gz
drwxr-xr-x. 2 root root 6 Apr 17 09:53 archive-tmp
drwxr-xr-x. 3 root root 22 Apr 17 09:53 maven-shared-archive-resources
drwxr-xr-x. 3 root root 18 Apr 17 09:53 tmp
drwxr-xr-x. 2 root root 6 Apr 17 09:53 warehouse
- 启动hive查看结果
hive> show functions;
row_number
rpad
rtrim
sayhi
second
sentences
sign
sin
size
...
发现有了 添加成功
测试一下函数
hive> select name, sayhi(name) from tmp;
OK
lingzong Hi: lingzong
到此, 自定义UDF函数集成到源码就完成了