0


在Hive中编写和注册UDF(用户自定义函数)

文章目录

前言

  • 函数分类标准

**原生分类标准: 内置函数 和 用户定义函数(UDF,UDAF,UDTF)
分类标准扩大化: 本来,UDF 、UDAF、UDTF这3个标准是针对用户自定义函数分类的; 但是,现在可以将这个分类标准扩大到hive中所有的函数,包括内置函数和自定义函数;
目前hive三大标准

UDF

:(User-Defined-Function)普通函数: 特点是一进一出(输入一行数据输出一行数据) 举例: split

UDAF

:(User-Defined Aggregation Function)聚合函数: 特点是多进一出(输入多行输出一行) 举例: count sum max min avg

UDTF

:(User-Defined Table-Generating Functions)表生成函数: 特点是一进多出(输入一行输出多行) 举例: explode
查询所有hive函数名称: show functions;
查看某函数使用帮助文档: desc function [extended] 函数名; 注意: 加上extended关键字能查看详细信息示例**


1、编写UDF

  • 首先,你需要创建一个新的Java类,继承自org.apache.hadoop.hive.ql.exec.UDF。在这个类中,你需要实现evaluate方法,该方法将处理函数的输入并返回结果。
packageudf;importorg.apache.hadoop.hive.ql.exec.UDF;importutils.ComputationUtil;/***
 * 编写注册udf
 * 两个经纬度计算距离udf
 * */publicclass calDistance extendsUDF{publicdoubleevaluate(double lon,double lat,double lon1,double lon2){returnComputationUtil.getDistance(lon, lat, lon1, lon2);}}
  • 导入依赖
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>3.1.3</version>
        </dependency>

2、编译UDF

将项目编译成一个JAR文件。

3、创建和注册UDF

  • 将编译好的JAR文件上传到hdfs目录。
hdfs dfs -put udf-cdh-1.0-SNAPSHOT-jar-with-dependencies.jar /user/cttic/udf/gps
  • 使用CREATE FUNCTION命令创建并注册UDF。
-- 永久udf 函数创建CREATEFUNCTIONdefault.cal_distance AS'udf.calDistance'using jar 'hdfs://nameservice1:8020/user/cttic/udf/gps/udf-cdh-1.0-SNAPSHOT-jar-with-dependencies.jar';
  • 这里的udf.calDistance是你的类名,而using 'jar’指定了使用JAR文件。

5、使用UDF

selectdefault.cal_distance(121483800,31384000,121483800,31384200);

6、删除UDF函数

dropfunctiondefault.cal_distance;

总结

如果此篇文章有帮助到您, 希望打大佬们能

关注

点赞

收藏

评论

支持一波,非常感谢大家!
如果有不对的地方请指正!!!

参考1


本文转载自: https://blog.csdn.net/weixin_42326851/article/details/138671452
版权归原作者 lfwh 所有, 如有侵权,请联系我们删除。

“在Hive中编写和注册UDF(用户自定义函数)”的评论:

还没有评论