通过开发Plugin插件方式开发Presto UDF
Presto 插件机制为开发者提供了以下功能:
- 对接自定义存储系统
- 添加自定义数据类型
- 添加自定义处理函数
- 自定义权限控制
以下是开发Presto UDF函数的步骤
1、逻辑代码开发
1 | public class UdfDemo |
注意点
- @Description 是自定义方法注释
- @ScalarFunction 是函数名称
- @SqlType 是函数出参
- @ScalarFunction 中函数名称需要和具体方法名称保持一致
- 方法入参需要添加 @SqlType 控制Java类型与Presto类型对应
2、插件编写
1 | public class DemoPlugin implements Plugin { |
注意点
- add所添加类即为对应的UDF方法类
3、服务注册
- 在src/main/ 目录下创建以下文件夹resource/META-INF/services
- 在services文件夹中添加名称为 com.facebook.presto.spi.Plugin的文件
- 在 com.facebook.presto.spi.Plugin中添加实现的插件类名称,如图所示
4、发布jar包
- 用maven 将项目打包(添加所有依赖)
- 在presto 安装目录下的plugin 文件夹中新建文件夹名称为UDF名称,将jar包放置于该文件夹中
- 重启presto服务
5、在cli端使用UDF
如图所示
过程中可能出现的异常
presto 启动日志中出现 localfile already exist,原因maven打包中添加了 以下依赖
1 | <dependency> |