概述
当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。
自定义函数类别
UDF 作用于单个数据行,产生一个数据行作为输出。(数学函数,字符串函数)
UDAF(用户定义聚集函数):接收多个输入数据行,并产生一个输出数据行。(count,max)
1)show functions;
2)select array(1,3,4);
3)select explode(array(1,2,3));
4)describe function split; 查看一个方法怎么使用
5)describe function extended split扩展帮助
1、在pom.xml中添加如下:
<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec --><dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.1.0</version>
</dependency>
2.、先开发一个java类,继承UDF,并重载evaluate方法
package hivedemo.udf;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
/**
* 自定义hive函数
*/
@Description(name = "myadd",
value = "myadd(int a , int b) ==> return a + b ",
extended = "Example:n"
+ " myadd(1,1) ==> 2 n"
+ " myadd(1,2,3) ==> 6;")
public class AddUDF extends UDF {
public int evaluate(int a ,int b) {
return a + b ;
}
public int evaluate(int a ,int b , int c) {
return a + b + c;
}
}
3、打成jar包上传到服务器
cmd>cd {classes所在目录}
cmd>jar cvf HiveDemo.jar -C x/x/x/x/classes/ .
4.将jar包添加到hive的classpath
//添加jar到类路径
$>cp /mnt/hgfs/downloads/bigdata/data/HiveDemo.jar /soft/hive/lib
3.重进入hive
$>....
5.创建临时函数与开发好的java class关联
CREATE TEMPORARY FUNCTION myadd AS 'hivedemo.udf.AddUDF';
6.即可在hql中使用自定义的函数myadd
$hive>select myadd(1,2) ;
最后
以上就是怕孤独乌龟为你收集整理的Hive自定义函数的全部内容,希望文章能够帮你解决Hive自定义函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复