一、Event Listener
presto事件监听器Event Listener,作为plugin监听以下事件:
- Query creation
查询建立相关信息 - Query completion (success or failure)
查询执行相关信息,包含成功查询的细节信息,失败查询的错误码等信息 - Split completion (success or failure)
split执行信息,同理包含成功和失败的细节信息.
备注
一个presto集群中只能有一个Event Listener plugin
二、Implementation
如何实现一个Event Listener:
1)通过EventListenerFactory建立EventListener
2)实现EventListener,根据需要实现所需方法
public interface EventListener
{
default void queryCreated(QueryCreatedEvent queryCreatedEvent)
{
}
default void queryCompleted(QueryCompletedEvent queryCompletedEvent)
{
}
default void splitCompleted(SplitCompletedEvent splitCompletedEvent)
{
}
}
其中:
- 事件
QueryCreatedEvent
包含query建立的详细信息 - 事件
QueryCompletedEvent
包含query执行的详细信息 - 事件
SplitCompletedEvent
包含split执行的详细信息
备注
如果希望将自定义的异常信息监听至 QueryCompletedEvent
中的failureInfo QueryFailureInfo
中,自定义异常需要继承spi中标准异常,如PrestoException
3)实现一个Plugin,实现 getEventListenerFactories()
方法
Plugin的使用方式,可参见Presto函数开发简述.
4) 添加配置信息etc/event-listener.properties
.
event-listener.properties 至少应配置event-listener.name , presto结合该属性和EventListenerFactory.getName()
中获得的值找到事件监听插件
Example configuration file:
event-listener.name=custom-event-listener
custom-property1=custom-value1
custom-property2=custom-value2
三、Example
由于集群运维治理需要,有时需要将presto执行日志分类落盘。这里简单给出一个日志事件监听器插件的样例。
如