创建hive自定义函数

1、引用包:

(1)、引用$HIVE_HOME/lib下的所有jar包;

(2)、引用$HADOOP_HOME/hadoop-core-xx.xx.jar包

2、源码

(1)示例1

package org.robby.hive.udf;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

public class RobLower extends UDF {

	public Text evalute(final Text s) {
		if (s == null)
			return null;
		return new Text(s.toString().toLowerCase());
	}
}

 

(2)示例2

package org.robby.hive.udf;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.w3c.dom.Text;

public class RobBigger3 extends UDF {
	
	public Boolean evaluate(Text s){
		if(s==null){
			return null;
		}
		int t= Integer.parseInt(s.toString());
		if(t>3){
			return true;
		}else{
			return false;
		}
	}
}

 

3、打包输出成jar文件

/home/conkeyn/jar/rob_lower.jar

/home/conkeyn/jar/rob_bigger3.jar

4、在hive命令行中添加jar包和创建自定义函数

hive>add jar /home/conkeyn/jar/rob_lower.jar;
hive>create temporary function my_lower as 'org.robby.hive.udf.RobLower';
hive>add jar /home/conkeyn/jar/rob_bigger3.jar;
hive>create temporary function my_lower as 'org.robby.hive.udf.RobBigger3';

5、准备测试数据:

BOB     1
AMY     2
ROBBY   3
STEVEN  4

 6、创建表:

 

drop table if exists tab_test;
create table tab_test(a string,b int) row format delimited fields terminated by '\t';
load data local inpath '/home/conkeyn/jar/tab_test1.txt' overwrite into table tab_test;

 7、测试自定义函数:

 

select * from tab_test where my_bigger3(b);
select my_lower(a) from tab_test;

 8、注意,如果出现创建函数异常、或者查询时出现字段类型对应不上时,需要退出hive环境,再重新进入hive环境。重新进入时使用debug进入

[conkeyn@hadoop bin]$ hive -hiveconf hive.root.logger=DEBUG,console

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值