实现新的Presto插件时,将实现接口并覆盖SPI定义的方法。
插件可以提供连接器,类型,功能和系统访问控制。连接器是Presto中所有查询数据的来源:它们支持Presto可用的每个目录
SPI代码可在根目录的presto-spi
目录中找到。
Plugin Metadata
每个插件都标识一个入口点:Plugin
接口的实现。此类的名称是通过标准Java ServiceLoader
接口提供给Presto
的:类路径包含META-INF/services
目录中名为com.facebook.presto.spi.Plugin
的资源文件。该文件的内容是一行,列出了插件类的名称.
com.facebook.presto.example.ExamplePlugin
对于Presto源代码中包含的内置插件,只要插件的pom.xml文件包含以下行,就会创建此资源文件
<packaging>presto-plugin</packaging>
插件
对于希望了解Presto SPI的开发人员而言,Plugin
接口是一个很好的起点。它包含访问方法,以检索插件可以提供的各种类。例如,getConnectorFactories()
方法是一个顶层函数,当Presto准备好创建连接器实例以支持目录时,Presto会调用该函数来检索ConnectorFactory
。 Type
,ParametricType
,Function
,SystemAccessControl
和EventListenerFactory
对象也有类似的方法。
网友评论