基于FusionInsight的Hive UDF样例
一、Hive自定义函数介绍
当Hive的内置函数不能满足需要时,可以通过编写用户自定义函数UDF(User-Defined Functions)插入自己的处理代码并在查询中使用它们。
按实现方式,UDF分如下分类:
普通的UDF,用于操作单个数据行,且产生一个数据行作为输出。
用户定义聚集函数UDAF(User-Defined Aggregating Functions),用于接受多个输入数据行,并产生一个输出数据行。
用户定义表生成函数UDTF(User-Defined Table-Generating Functions),用于操作单个输入行,产生多个输出行。
按使用方法,UDF有如下分类:
临时函数,只能在当前会话使用,重启会话后需要重新创建。
永久函数,可以在多个会话中使用,不需要每次创建。
二、创建UDF工程
1、创建maven项目,示例如下
2、创建UDF类 com.huawei.bigdata.hive.example.udf.AddDoublesUDF,示例代码如下面图示
3、从hive客户端类似如下目录/opt/client/Hive/Beeline/lib 中下载UDF工程依赖的jar包hive-exec-*.jar,添加到UDFS工程中,放入lib目录,右键点击该jar包,选择 “Add as Library”
4、修改该项目的pom.xml文件,增加如下build部分
5、执行maven打包,获得如下target目录中的 udf-demo-1.0-SNAPSHOT.jar
三、部署UDF
1、将 udf-demo-1.0-SNAPSHOT.jar 上传到部署有HDFS的节点,例如上传后的路径为 /opt/udf-demo-1.0-SNAPSHOT.jar
2、上传到HDFS指定路径下,参考命令如下图,注意后续使用该UDF的用户必须有该jar包的可读权限
3、使用Hive的Beeline客户端创建UDF
通过如下命令进入beeline客户端
beeline --hiveconf hive.server2.logging.operation.level=NONE
重新进入beeline命令
- 点赞
- 收藏
- 关注作者
评论(0)