元数据
s number
京 2
冀 4
吉 2
川 2
桂 4
沪 601
津 1
浙 50
湘 1
琼 1
皖 57
粤 5
苏 130
豫 9
贵 1
赣 10
辽 1
鄂 3
闽 9
鲁 15
黑 1
udf函数
package udf;
import org.apache.hadoop.hive.ql.exec.UDF;
import java.util.HashMap;
//
public class UdfDemo_Two extends UDF {
static HashMap<String,String> map = new HashMap<>();
static {
map.put("京","北京市");
map.put("津","天津市");
map.put("沪","上海市");
map.put("渝","重庆市");
map.put("冀","河北省");
map.put("豫","河南省");
map.put("云","云南省");
map.put("辽","辽宁省");
map.put("黑","黑龙江省");
map.put("湘","湖南省");
map.put("皖","安徽省");
map.put("鲁","山东省");
map.put("新","新疆维吾尔");
map.put("苏","江苏省");
map.put("浙","浙江省");
map.put("赣","江西省");
map.put("鄂","湖北省");
map.put("桂","广西壮族");
map.put("甘","甘肃省");
map.put("晋","山西省");
map.put("蒙","内蒙古");
map.put("陕","陕西省");
map.put("吉","吉林省");
map.put("闽","福建省");
map.put("贵","贵州省");
map.put("粤","广东省");
map.put("青","青海省");
map.put("藏","西藏");
map.put("川","四川省");
map.put("宁","宁夏回族");
map.put("琼","海南省");
}
public String evaluate(String name){
String qc = map.get(name);
return qc==null?"错误":qc;
}
}
将udf函数加载进 hive
1、add jar /root/data/WordCount.jar;
//查看加载进hive中的都有哪些 jar
2、list jar;
// 在hive中创建一个 包含udf的方法 类的全限定名
3、create temporary function xss as 'udf.UdfDemo_Two';
// 调用刚才定义的包含udf的方法进行转换
select s,xss(s),number from res2;
结果
s name number
京 北京市 2
冀 河北省 4
吉 吉林省 2
川 四川省 2
桂 广西壮族 4
沪 上海市 601
津 天津市 1
浙 浙江省 50
湘 湖南省 1
琼 海南省 1
皖 安徽省 57
粤 广东省 5
苏 江苏省 130
豫 河南省 9
贵 贵州省 1
赣 江西省 10
辽 辽宁省 1
鄂 湖北省 3
闽 福建省 9
鲁 山东省 15
黑 黑龙江省 1