关于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包
这里以自定义临时函数为例
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
;
如果需要使用自定义永久函数,可以先上传到HDFS。
[root@nd2 wh
]
[root@nd2 wh
]
Found 1 items
-rw-r--r-- 3 root supergroup 699 2019-05-22 14:03 /wh/test/addPrefix.jar
下面是简单使用
create function add_prefix
as 'com.test.AddPrefix'
using jar
'hdfs:///wh/test/addPrefix.jar'
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
;