1.UDF是什么?
hive的类SQL预发给数据挖掘工作者带来了很多便利,海量数据通过简单的sql就可以完成分析,有时候hive提供的函数功能满足不了业务需要,就需要我们自己来写UDF函数来辅助完成,下面用一个简单的例子说明过程,以及注意事项。UDF函数其实就是一个简单的函数,执行过程就是在Hive转换成mapreduce程序后,执行java方法,类似于像Mapreduce执行过程中加入一个插件,方便扩展. UDF只能实现一进一出的操作,如果需要实现多进一出,则需要实现UDAF .
Hive可以允许用户编写自己定义的函数UDF,来在查询中使用
2.UDF类型
Hive中有3种UDF:UDF:操作单个数据行,产生单个数据行;
UDAF:操作多个数据行,产生一个数据行。
UDTF:操作一个数据行,产生多个数据行一个表作为输出。
3.如何构建UDF
用户构建的UDF使用基本过程如下:
第一步:继承UDF或者UDAF或者UDTF,实现特定的方法。第二步:将写好的类打包为jar。如CorrectResolution.jar。
第三步:进入到Hive外壳环境中,利用add jar /home/hadoop/CorrectResolution.jar注册该jar文件
第四步:为该类起一个别名,create temporary function correct_resolution as 'correct_resolution.CorrectResolution';这里注意UDF只是为这个Hive会话临时定义的。若要永