注册UDF函数
(1)helloUDF.java中package信息需要修改,代码如下:
/*package com.maven.udf;*/
package org.apache.hadoop.hive.ql.udf;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
/**
* 一个UDF: helloUDF
*/
public class helloUDF extends UDF {
public Text evaluate( Text input){
return new Text("Hello: "+input);
}
}
(2)将helloUDF.java文件上传到编译环境指定目录,linux使用scp命令,windows使用rz命令
cd /home/gaof20/v_11/hive/hive-1.1.0-cdh5.7.0/ql/src/java/org/apache/hadoop/hive/ql/udf
(3)修改UDF函数注册文件
vim /home/gaof20/v_11/hive/hive-1.1.0-cdh5.7.0/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
添加两行信息:
(4)重新编译hive,并将编译后的.jar拷贝到hive主服务节点,重启hive
scp /home/gaof20/v_11/hive/BUILD_INDEPENDENT_WORKING_DIR/BUILD/hive-1.1.0-cdh5.7.0/ql/target/hive-exec-1.1.0-cdh5.7.0.jar root@10.110.181.40:/usr/leap/3.4.4.0/hive/usr/lib/hive/lib
(5)测试永久注册UDF的有效性
在hive主节点上,进入beeline
beeline --silent -u "jdbc:hive2://10.110.181.40:10000" -n hive
创建一个hive表,然后测试UDF函数
create table flow(phoneNum string, upflow int, downflow int) row format delimited fields terminated by '\t';
load data local inpath '/tmp/flow.data' into table flow;
测试成功。
来源:我是码农,转载请保留出处和链接!
评论专区