Inceptor如何创建用户自定义函数UDF,一篇文章带你了解

一、UDF介绍

Inceptor拥有大量的内置函数,用户可以使用函数对数据进行多种计算,函数及其用法在Inceptor函数和运算符手册中列出。另外,您可以在Inceptor中创建自定义函数UDF(User Define Function)来扩充函数功能。用户自定义函数需要使用Java语言进行编写,完成的UDF可以打包成Jar加载到Inceptor server中。

自定义函数分为 临时函数永久函数,临时函数在重启Inceptor前在各个session间都是有效的,重启Inceptor后该函数将不再存在,如需使用需要重新创建。永久函数则在Inceptor重启后依然可以使用。临时函数和永久函数的创建和删除可以通过Inceptor SQL进行,下文将对创建流程做出介绍。

Tip:Inceptor从TDH 4.5.2开始支持创建永久函数。

 

二、部署方式
环境说明:TDH-CE(TDH 9.0)

星环提供了三种部署方式,可查看下方介绍进行了解,如果您想了解更多我们也为您提供了部署Demo及视频教学供您参考:《UDF部署操作指南(含视频教程)》

1. 把UDF固化到image里,重新打image(推荐)
此方式的核心逻辑是把UDF jar包放到image的/usr/lib/inceptor/下面,重新制作image。
具体步骤请参考:《UDF部署操作指南(含视频教程)》


2. 创建临时函数CREATE/DROP TEMPORARY FUNCTION

第一步添加jar包add jar <file_path>

<file_path>指定添加jar包的路径,添加的jar必须在Inceptor Server运行的容器里。

注意:在重启Inceptor Server之前,通过 add jar 添加的jar包不能重名,且不能包含重名的类。

第二步创建命令create temporary function <function_name> as <class_name>;

以上语句创建一个由class_name实现的临时函数。这个新创建的函数只能在当前session使用。用户可以使用任意一个在classpath中的class。

检验是否创建成功desc function <function_name>;输入命令后,显示函数名称

删除临时函数drop temporary function [if exists] <function_name>;若函数存在,删除函数

 

3. 创建永久函数CREATE/DROP PERMANENT FUNCTION

说明:创建一个由class_name实现的永久函数。这个函数将在metastore登记,不需要在每个session重新建临时函数。需要加入环境的jar包,文件或者档案可以通过 using 指定。第一次使用该函数时,这些资源会像被add jar/file 一样加到环境中。如果Inceptor不在local mode,那么资源的地址也必须是非本地URI,比如HDFS地址。

第一步添加jar包add jar <file_path>

<file_path>指定添加jar包的路径,添加的jar必须在Inceptor Server运行的容器里。

注意:在重启Inceptor Server之前,通过 add jar 添加的jar包不能重名,且不能包含重名的类。

第二步创建命令

create permanent function [<database_name>] <function_name> as <class_name>

[using jar/file/archive<file_uri>[, jar/file/archive<file_uri>] ];

[...]表示其中内容可省略;“jar/file/archive”分别代表三种文件形式:压缩,文件,归档;
<file_uri>:Uniform Resource Identifier 统一资源标志符,即文件路径。

删除永久函数drop permanent function [if exists] <function_name>; 若函数存在,删除函数

 

三、注意事项

1. UDF 无论是临时还是永久,如果要删除并重新创建使用相同类或者jar 的话,都要重启inceptor server。

2. 永久函数,临时函数,内嵌函数(自带的UDF)不能重名; 永久函数和plsql 函数/存储过程也不能重名;临时函数可以和plsql 函数重名,调用时优先调用临时函数。

3. 永久函数和临时函数都是全局的,不受当前数据库影响。

4. 永久函数指定的jar 被删除后,永久函数不允许删除。

更多文章推荐:


评论
登录后可评论
发布者
icon
扬仔无敌
文章
31
问答
119
关注者
10
banner
关注星环科技
获取最新活动资讯

加入TDH社区版技术交流群

获取更多技术支持 ->

扫描二维码,立即加入