我是靠谱客的博主 怕孤独乌龟,最近开发中收集的这篇文章主要介绍Hive自定义函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDFuser-defined function)。

自定义函数类别


UDF  作用于单个数据行,产生一个数据行作为输出。(数学函数,字符串函数)

UDAF(用户定义聚集函数):接收多个输入数据行,并产生一个输出数据行。(countmax

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包添加到hiveclasspath

//添加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自定义函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部