Hive UDF开发

======================1 转换小写==========================
hive> select * from student;
OK
2	BEBETTER
1	HUANGPENG
Time taken: 0.149 seconds, Fetched: 2 row(s)
hive> desc student;
OK
id                  	int                 	                    
name                	string    

<1>创建java工程,导入hive包中lib文件夹下所有.jar包
package com.hp.hive.udf;

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

public class ToLowerCase extends UDF {

	public String evaluate(String field) {
		return field.toLowerCase();
	}

}

<2>导出jar包到本地,并上传到服务器

<3>hive中执行add jar命令(只在此命令后中有效)
hive> add jar /home/hadoop/worktmp/20170318/hiveudf.jar;

<4>创建临时函数
hive> create temporary function tolow as 'com.hp.hive.udf.ToLowerCase';

<5>调用
hive> select id, name, tolow(name) from student;
OK
2	BEBETTER	bebetter
1	HUANGPENG	huangpeng
Time taken: 0.136 seconds, Fetched: 2 row(s)


======================2 得到省份==========================
hive> select * from province;
OK
1	13612341234
2	13712342343
3	13312312312
4	13921231231
5	13021312312
Time taken: 0.202 seconds, Fetched: 5 row(s)
hive> desc province;
OK
id                  	int                 	                    
phonenbr            	string              	                    
Time taken: 0.088 seconds, Fetched: 2 row(s)

<1>创建java工程,导入hive包中lib文件夹下所有.jar包
package com.hp.hive.udf;

import java.util.HashMap;

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

public class GetProvin extends UDF{
	
	public static HashMap<String, String> provinceMap = new HashMap<String, String>();

	static {
		provinceMap.put("130", "Hubei");
		provinceMap.put("133", "Beijing");
		provinceMap.put("136", "Shenzhen");
		provinceMap.put("137", "Haerbing");
		provinceMap.put("139", "Taiwan");
	}

	public String evaluate(String pnumber) {
		String start3numbe = pnumber.substring(0, 3);
		String province = provinceMap.get(start3numbe);
		return province == null ? "huoxing" : province;
	}

}

<2>导出jar包到本地,并上传到服务器

<3>hive中执行add jar命令(只在此命令后中有效)
hive> add jar /home/hadoop/worktmp/20170318/hiveudf4.jar;

<4>创建临时函数
hive> create temporary function getprovin as 'com.hp.hive.udf.GetProvin';

<5>调用
hive> select id, phonenbr, getprovin(phonenbr) from province;
OK
1	13612341234	Shenzhen
2	13712342343	Haerbing
3	13312312312	Beijing
4	13921231231	Taiwan
5	13021312312	Hubei
Time taken: 0.136 seconds, Fetched: 5 row(s)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值