Presto 开发UDF
【摘要】 Presto 开发UDF:在MRS集群上以插件形式添加自定义函数
与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
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)