Presto 开发UDF

举报
星星de童话 发表于 2020/06/15 15:23:28 2020/06/15
【摘要】 Presto 开发UDF:在MRS集群上以插件形式添加自定义函数

hive不同,prestoudf 是以plugin的形式加载到presto中的,下面就在MRS 2.1.0的集群上来实践一下。

1. 新建maven工程添加相关依赖


2. 编写官网资料(https://prestosql.io/docs/current/develop/functions.html)编写Functionplugin

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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。