Presto Event Listener开发

本文介绍了如何开发Presto Event Listener,用于监听Presto查询事件,如查询创建、完成和split完成。实现包括实现EventListener、EventListenerFactory和Plugin接口,打包成jar,并部署到Presto集群,以实现查询日志记录和性能分析等功能。文中给出了将查询信息存储到Mysql数据库的示例。
摘要由CSDN通过智能技术生成

一、简介

同Hive Hook一样,Presto也支持自定义实现Event Listener,用于侦听Presto引擎执行查询时发生的事件,并作出相应的处理。我们可以利用该功能实现诸如自定义日志记录、调试和性能分析插件,帮助我们更好的运维Presto集群。但是不同于Hive Hook的是,在Presto集群中,一次只能有一个Event Listener处于活动状态。

Event Listener作为Plugin监听以下事件:

  • Query Creation(查询建立相关信息)
  • Query completion (success or failure)(查询执行相关信息,包含成功查询的细节信息,失败查询的错误码等信息)
  • Split completion (success or failure)(split执行信息,同理包含成功和失败的细节信息)

了解Hook及Listener模式的朋友对于其步骤应该很清楚了,我们只需要:

  1. 实现Presto Event Listener和EventListenerFactory接口。
  2. 正确的打包我们的jar。
  3. 部署,放到Presto指定目录,修改配置文件。

二、实现步骤  

  1. 添加pom依赖,如下 
    <presto.version>0.273.3</presto.version>
     
    <dependency>
        <groupId>com.facebook.presto</groupId>
        <artifactId>presto-spi</artifactId>
        <version>${presto.version}</version>
    </dependency>
    
  2. 实现EventListener,该类是我们的核心逻辑所在,供包含上面所说的三个事件:
    public interface EventListener{
    	//query创建的详细信息
        default void queryCreated(QueryCreatedEvent queryCreatedEvent)
        {
        }
    	//query执行的详细信息
        default void queryCompleted(QueryCompletedEvent queryCompletedEvent)
        {
        }
    	//split执行的详细信息
        default void splitCompleted(SplitCompletedEvent splitCompletedEvent)
        {
        }
    }
  3. 实现EventListenerFactory创建我们自己实现的EventListener
    public interface EventListenerFactory {
        String getName();
    
        EventListener create(Map<String, String> config);
    }
    
  4. 实现Plugin接口,实现getEventListenerFactories()方法,获取我们自己实现的EventListenerFactory
    public class NwdEventListenerPlugin implements Plugin {
        @Override
        p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莱恩大数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值