在Hive中,编写自定义UDF函数,可以帮助我们更轻松的做ETL。
例如,现在我要求某一列数据的平方,在eclipse新建工程,并新建一个Test包,在Test包下新建一个类Square:
public class Square extends UDF{
public DoubleWritable evaluate(Text k){
DoubleWritable dw = new DoubleWritable(Math.pow(Double.parseDouble(k.toString()),2));
return dw;
}
}
然后将代码打成jar包,如:test01.jar。然后将这个jar包上传到linux上。
在CLI中输入:
add jar /opt/test01.jar;
create temporay function squera as 'Test.Square'; // 定义函数别名,'Test.Square'为jar包中的包名加类名
select squera(id),name from my_udf; // 直接调用函数名来使用函数