UDF编程操作实现
1 编写Lower_Or_UpperCase.java,其代码如下:
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class Lower_Or_UpperCase extends UDF{
public Text evaluate(Text t, String up_or_lower){
if(t==null){
return null;
}else if(up_or_lower.equals("lowercase")){
return new Text(t.toString().toLowerCase());
}else if(up_or_lower.equals("uppercase")){
return new Text(t.toString().toUpperCase());
}else{
return null;
}
}
}
2 将Lower_Or_UpperCase.java打成jar包导入到ubuntu系统hadoop用户的hive-data文件夹。
3 实现该函数,具体操作和计算结果如下:
hive> add jar /home/hadoop/hive-data/uporlower.jar;
hive> create temporary function uporlower1 as 'Lower_Or_UpperCase';
hive> select uporlower1(name, 'uppercase') from userinfo;
WANGMING
XIAOMING
WUJING
ZHANGQI
XIAOMI
WANGYI
hive> select uporlower(name, 'lowercase') from userinfo;
wangming
xiaoming
wujing
zhangqi
xiaomi
wangyi