您的位置:首页 > 其它

Hive UDF开发

2017-03-19 01:45 381 查看
======================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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: