hive UDF笔记
1.编写代码
package com.billstudy.udf;import java.util.HashMap;import java.util.Map;import org.apache.hadoop.hive.ql.exec.UDF;import org.apache.hadoop.io.Text;/*** 自定义UDF函数* @author Bill* @since V1.0 2015年6月14日 - 下午10:33:00*/public class NationUDF extends UDF{public static Map<String,String> nationMap = new HashMap<String,String>();static {nationMap.put("china", "中国");nationMap.put("japan", "日本");nationMap.put("usa", "美国");}private Text returnNation = new Text();/*** 名称必须是evaluate* @author Bill* @since V1.0 2015年6月14日 - 下午10:32:41* @param nationKey* @return*/public Text evaluate(Text nationKey){String nation = nationMap.get(nationKey.toString());if (nation == null) {nation = "未知";}returnNation.set(nation);return returnNation;}}
2.加入jar
hive> add jar /home/hadoop/NationUDF.jar
3.创建函数
create tepmorary function nation as “com.billstudy.udf.NationUDF”
4.使用
默认情况select * from person;

使用函数
select id,name,nation(nation) from person;

实验记录:
在第一次,自己没有往nationMap填充默认值时,也就是hive里面查询会显示所有的nation都是未知的,这个时候将代码修改后重新上传到上次add jar的位置(/home/hadoop/NationUDF.jar),hive可以自动使用新的jar。不需要重新add jar 然后再创建函数。