内容纲要
概要描述
本文介绍如何使用InceptorSQL创建自定义函数。自定义函数分为 临时函数和永久函数 ,临时函数在重启Inceptor前在各个session间都是有效的,重启Inceptor后该函数将不再存在,如需使用需要重新创建。永久函数则在Inceptor重启后依然可以使用。
基本语法介绍
1. CREATE/DROP FUNCTION
1.1 CREATE/DROP TEMPORARY FUNCTION
使用如下命令可以创建一个临时函数:
CREATE TEMPORARY FUNCTION AS ;
使用如下命令可以删除一个临时函数:
DROP TEMPORARY FUNCTION [IF EXISTS] ;
1.2 CREATE/DROP PERMANENT FUNCTION
使用如下命令可以创建一个永久函数:
CREATE PERMANENT FUNCTION AS ;
使用如下命令可以删除一个永久函数:
DROP PERMANENT FUNCTION [IF EXISTS] ;
2. SHOW FUNCTIONS OR DESC FUNC
创建函数完成后可以使用SHOW FUNCTIONS or DESC FUNCTION 来查看是否有创建成功:
SHOW FUNCTIONS <函数名>;
DESC FUNCTION <函数名>;
添加函数的实例
part1 创建函数前的准备工作
1. 登录服务器查看inceptor server对应的pod名称
kubectl get po -owide |grep inceptor
2. 上传jar包到inceptor server的/tmp目录下
kubectl cp hiveudf-1.0-SNAPSHOT.jar default/inceptor-server-inceptor1-6bbdfcc479-twcj2:/tmp
3. 做inceptor 镜像持久化
此处可以参考KB:如何对镜像做持久化
4. 页面上重启inceptor
5. beeline连接inceptor
此处可以参考KB:beeline连接inceptor方式汇总
part2 添加永久函数
1. 进入beeline下添加对应的jar包
add jar /tmp/hiveudf-1.0-SNAPSHOT.jar;
2. 创建永久函数
create permanent function to_js as 'com.zxs.ToJson';
3. 查看永久函数是否创建成功
show functions to_js;
4. 测试函数功能是否正常(需要根据自定义的函数使用方式进行验证)
select to_js('aa',23,'bb',56) from system.dual;
part3 添加临时函数
1. 进入beeline下添加对应的jar包
add jar /tmp/hiveudf-1.0-SNAPSHOT.jar;
2. 创建临时函数
create temporary function to_js_t as 'com.zxs.ToJson';
3. 查看临时函数是否创建成功
show functions to_js_t;
4. 测试函数功能是否正常(需要根据自定义的函数使用方式进行验证)
select to_js_t('aa',23,'bb',56) from system.dual;
注意:
- udf 无论是临时还是永久,如果要删除并重新创建使用相同类或者 jar 的话,都要重启 inceptor server
- 永久函数,临时函数,内嵌函数(自带的 udf)不能重名; 永久函数和 plsql 函数/存储过程也不能重名;临时函数可以和 plsql 函数重名,调用时优先调用临时函数。
- 永久函数和临时函数都是全局的,不受当前数据库影响。
- 当永久函数指定的 jar 被删除后,永久函数不允许删除。
One Reply to “使用jar包创建自定义函数”
cloud太赞了!