通过开发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>  |