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)