Hive:临时函数和永久函数
关于HIVE实现自定义函数,步骤主要可分为:
- 继承
org.apache.hadoop.hive.ql.exec.UDF
- 重写evaluate()方法
- 打包jar
- 添加jar包
- 使用自定义函数
下面是具体实现,包括自定义临时函数和自定义永久函数。
编写自定义函数
public class AddPrefix extends UDF { /** * 这里我们实现将任一输入添加自定义前缀信息 */ public String evaluate(String str) { return "HIVE UDF Prefix:"+ str; } }
打包jar,进入HIVE客户端,引入相关jar包
- 这里以自定义临时函数为例
--添加jar包 hive> add jar /usr/wh/addPrefix.jar; --创建自定义临时函数 hive> create temporary function add_prefix as 'com.test.AddPrefix'; --使用自定义临时函数 hive> select add_prefix('aa'); HIVE UDF Prefix:aa hive> select add_prefix(1); HIVE UDF Prefix:1 --这里我们切换数据库依然可以正常使用。为了便于观察,我们打开数据库显示。 hive> set hive.cli.print.current.db=true; hive (test)> select add_prefix('aa'); HIVE UDF Prefix:aa hive (test)> use tmp; hive (tmp)> select add_prefix('aa'); HIVE UDF Prefix:aa --销毁自定义临时函数 hive (test)> drop temporary function add_prefix; --需要注意的是,一旦退出HIVE客户端,自定义临时函数即被销毁。
- 如果需要使用自定义永久函数,可以先上传到HDFS。
[root@nd2 wh]# hadoop fs -put addPrefix.jar /wh/test/ [root@nd2 wh]# hadoop fs -ls /wh/test Found 1 items -rw-r--r-- 3 root supergroup 699 2021-05-22 14:03 /wh/test/addPrefix.jar
下面是简单使用
--创建永久函数 create function add_prefix as 'com.test.AddPrefix' using jar 'hdfs:///wh/test/addPrefix.jar' --与自定义临时函数不同,使用永久函数只能在当前数据库 --这里我们放在test库,如果在其它库执行,会报错 hive (test)> select add_prefix('aa'); HIVE UDF Prefix:aa hive> use tmp; hive (tmp)> select add_prefix('aa'); FAILED: SemanticException [Error 10011]: Invalid function add_prefix --销毁自定义永久函数 hive (test)> drop function add_prefix;
不要为了追逐,而忘记当初的样子。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!