基于FusionInsight的Hive UDF样例

举报
suwei 发表于 2020/09/29 10:00:06 2020/09/29
【摘要】 本文用于演示如何在FusionInsight HD中创建Hive自定义函数

一、Hive自定义函数介绍

当Hive的内置函数不能满足需要时,可以通过编写用户自定义函数UDF(User-Defined Functions)插入自己的处理代码并在查询中使用它们。

按实现方式,UDF分如下分类:

  • 普通的UDF,用于操作单个数据行,且产生一个数据行作为输出。

  • 用户定义聚集函数UDAF(User-Defined Aggregating Functions),用于接受多个输入数据行,并产生一个输出数据行。

  • 用户定义表生成函数UDTF(User-Defined Table-Generating Functions),用于操作单个输入行,产生多个输出行。

按使用方法,UDF有如下分类:

  • 临时函数,只能在当前会话使用,重启会话后需要重新创建。

  • 永久函数,可以在多个会话中使用,不需要每次创建。


二、创建UDF工程

1、创建maven项目,示例如下

image.png


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部分

image.png


5、执行maven打包,获得如下target目录中的 udf-demo-1.0-SNAPSHOT.jar

image.png


三、部署UDF

1、将 udf-demo-1.0-SNAPSHOT.jar 上传到部署有HDFS的节点,例如上传后的路径为 /opt/udf-demo-1.0-SNAPSHOT.jar


2、上传到HDFS指定路径下,参考命令如下图,注意后续使用该UDF的用户必须有该jar包的可读权限


image.png


3、使用Hive的Beeline客户端创建UDF

通过如下命令进入beeline客户端 

 beeline --hiveconf hive.server2.logging.operation.level=NONE


image.png


重新进入beeline命令

image.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。