Presto 开发UDF
与hive不同,presto的udf 是以plugin的形式加载到presto中的,下面就在MRS 2.1.0的集群上来实践一下。
1. 新建maven工程添加相关依赖
2. 编写官网资料(https://prestosql.io/docs/current/develop/functions.html)编写Function和plugin。
Function实现
public final class UdfTest { @ScalarFunction("lowercaser") @Description("Converts the string to alternating case") @SqlType(StandardTypes.VARCHAR) public static Slice lowercaser(@SqlType(StandardTypes.VARCHAR) Slice slice) { String argument = slice.toStringUtf8(); return Slices.utf8Slice(argument.toLowerCase()); } }
Plugin实现
public class ExampleFunctionsPlugin implements Plugin { @Override public Set<Class<?>> getFunctions() { return ImmutableSet.<Class<?>>builder() .add(UdfTest.class) .build(); } }
3. 加载plugin:在src/main/resources/META-INF/services目录下新建文本文件com.facebook.presto.spi.Plugin,并添加xxx.xxx.xxxPlugin,如下图
4. 使用clean package打包
5. 在/opt/Bigdata/MRS_2.1.0/install/FusionInsight-Presto-308/presto/plugin/ 目录下新建一个文件夹作为编写的插件的目录,并将步骤4中的jar包和相关依赖放在这个新建的目录下(每个节点都如此操作)。
6. 重启presto服务,在/var/log/Bigdata/presto/coordinator/coordinator.log和/var/log/Bigdata/presto/worker/worker.log中可以看到plugin已加载,function也注册成功
7.在节点上执行presto_cli.sh 进入客户端,用show functions命令可以看到注册的方法lowercaser
- 点赞
- 收藏
- 关注作者
评论(0)