1. 简介与核心概念
2. 架构
3. 使用
4. UDF
把phoneNumber转换成地区的UDF
import java.util.HashMap;
import org.apache.hadoop.hive.ql.exec.UDF;
public class PhoneNbrToArea extends UDF{
private static HashMap<String, String> areaMap = new HashMap<>();
static {
areaMap.put("1388", "beijing");
areaMap.put("1399", "tianjin");
areaMap.put("1366", "nanjing");
}
//Ò»¶¨ÒªÓÃpublicÐÞÊβÅÄܱ»hiveµ÷ÓÃ
public String evaluate(String pnb) {
String result = areaMap.get(pnb.substring(0,4))==null? (pnb+" huoxing"):(pnb+" "+areaMap.get(pnb.substring(0,4)));
return result;
}
}
将上面的java文件导成jar包,上传到hive中。
add jar /home/devil/example/hiveudf.jar;
- 为这个jar包中的脚本方法起一个别名
create temporary function getarea as 'cn.bigdata.PhoneNbrToArea';
- 使用这个udf
select getarea(phonenbr),upflow,downflow from t_flow;
参考:
《hive用户指南》
hive学习笔记 https://blog.youkuaiyun.com/beidiqiuren/article/details/51274318