udf函数
注:配置java里的pom.xml文件。在build里修改启动类的路径位置。
1、用java写出函数代码,写完之后打jar包
package kb07.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class MyUDF extends UDF {
public Text evaluate(Text text){
//将所有数据转为24小时制
String time=text.toString();
int hour = 0;
if (time.endsWith("PM")){
hour=Integer.parseInt(time = time.split(":")[0])+12;
hour=hour>=24?0:hour;
}else {
hour=Integer.parseInt(time = time.split(":")[0]);
}
//时间分段
if (hour>=5 && hour <8){
time="early morning";
}else if (hour>=8 && hour <11){
time="morning";
}else if (hour>=11 && hour <13){
time="noon";
}else if (hour>=13 && hour <18){
time="afternoon";
}else if (hour>=18 && hour <22){
time="evening";
}else {
time="night";
}
return new Text(time);
}
public static void main(String[] args) {
MyUDF mu=new MyUDF();
System.out.println(mu.evaluate(new Text("12:00 PM")));
}
}
2、启动hive,在hdfs中,创建funct文件夹,通过下列代码,将jar包导入到hive中,创建mytime函数
create function mytime as 'kb07.udf.MyUDF' using jar 'hdfs://192.188.252.11:9000/func/kb07-1.0-SNAPSHOT-jar-with-dependencies.jar';
可以测试udf函数。