Hive自定义函数注册
查询引擎都自带了一部分函数来帮助我们解决查询过程当中一些复杂的数据计算或者数据转换操作,但是有时候自带的函数功能不能满足业务的需要。这时候就需要我们自己开发自定义的函数来辅助完成了。
UDF函数其实就是一段遵循一定接口规范的程序。在执行过程中Hive将SQL转换为MapReduce程序,在执行过程当中在执行我们的UDF函数。
Hive UDF类型
Hive中有3种UDF:
UDF:操作单个数据行,产生单个数据行
UDAF:操作多个数据行,产生一个数据行
UDTF:操作一个数据行,产生多个数据行一个表作为输出
UDF注册
关于UDF的开发我们在视频当中已经对其进行了讲解和演示,本文就不在赘述了,相关的代码可以在慕课的git上找到。大家可以看一下示例,然后自己动手练习一下。
开发了UDF之后,我们需要将UDF注册到Hive中才能使用,那么如何进行函数的注册呢?Hive中对于UDF的注册分为两种,一种是临时注册,一种是永久注册。
顾名思义,临时注册即当前session中生效,而永久注册是一直生效。
临时注册
#导入jar包
#部署到hive的lib下,进入hive的交互式环境
hive
#添加jar到hive的classpath,或者add jar时指定全路径
add jar hive-udf-test-1.0-SNAPSHOT.jar
#注册临时函数
create temporary function UDF_NAME AS 'com.imooc.naga.TESTUDF';
#删除注册函数
drop temporary function UDF_NAME;
永久注册
#永久注册需要将jar包放到HDFS上,避免无法找到
create function UDF_NAME as 'com.imooc.naga.TESTUDF' using jar 'hdfs://hive_udf/hive-udf-test-1.0-SNAPSHOT.jar';
#删除注册函数
drop function UDF_NAME;