Plugins Presto插件:单JAR与多JAR
My有两个组件:一些(用于基本的Plugins Presto插件:单JAR与多JAR,plugins,presto,Plugins,Presto,My有两个组件:一些(用于基本的MD5/SHA1哈希)和一个(用于使用FluentD记录器记录查询) 在开发过程中(单节点Presto集群),我将它们添加到单个JAR下,并没有遇到任何问题 在部署过程中,我发现了一个陷阱:UDFs必须在所有节点上注册,而(我的特例)EventListener必须只在主节点上注册 现在我有两个选择 1。将它们捆绑在一个罐子中 我们可以通过外部配置文件控制UDFs/EventListeners的注册(主节点和从节点的不同配置)。随着越来越多的UDFs、Event
MD5
/SHA1
哈希)和一个(用于使用FluentD
记录器记录查询)
Presto
集群),我将它们添加到单个JAR
下,并没有遇到任何问题UDF
s必须在所有节点上注册,而(我的特例)EventListener
必须只在主节点上注册现在我有两个选择 1。将它们捆绑在一个罐子中 我们可以通过外部配置文件控制
UDF
s/EventListener
s的注册(主节点和从节点的不同配置)。随着越来越多的UDF
s、EventListener
s和其他SPI
s被添加,一个JAR
与经过调整的配置文件配对,以实现所需的结果
2。将它们打包成单独的罐子
我们可以为UDF
s/EventListener
创建不同的插件类,并通过Jenkins
在META-INF.services/com.facebook.spi.Plugin
文件中提供相应的类路径。然后,我们将为不同的组件提供不同的JAR
s:一个JAR用于所有UDF
s,一个JAR
用于所有EventListener
s等等。然而,随着将来添加更多功能,我们可能最终会有很多不同的JAR
s
我的问题是
- 这两种技术的优缺点是什么
- 有没有其他办法
我目前使用的是
Presto 0.194
,但很快就会升级到Presto 0.206
。你可以做对你来说最容易的事。实际上,中间有第三个选项,即在单个jar中有多个<代码>插件>代码>(您将列出<代码> Meta Anf/Service < /Cult>文件中的所有实现)。
EventListener
实际上用于协调器和工作程序。查询事件发生在协调器上,拆分事件发生在工作器上。但是,如果您只关心查询事件,那么您只需要在协调器上使用它
您可以在coordinator和Worker上部署事件插件,但只能在coordinator上配置它。只有通过将event listener.properties
文件与event listener.name
属性(该属性与您在EventListenerFactory.getName()中返回的名称匹配)添加到