SPI 概述

    可以在 openLooKeng 源代码树根目录下的 目录中找到 SPI 源代码。

    每个插件标识一个入口点:Plugin 接口的实现。该类名通过标准 Java ServiceLoader 接口提供给 openLooKeng:classpath 包含 META-INF/services 目录中一个名为 io.prestosql.core.spi.Plugin 的资源文件。该文件的内容只有一行,其中列出了插件类的名称:

    对于包含在 openLooKeng 源代码中的内置插件,每当插件的 pom.xml 文件包含以下行时,就会创建该资源文件:

    插件依赖于 openLooKeng 的 SPI:

    由于 openLooKeng 在运行时提供来自 SPI 的类,因此插件不应在插件程序集中包含这些类,所以插件使用 Maven 范围。

    openLooKeng 还提供了其他一些依赖项,包括 Slice 和 Jackson 注释。特别地,Jackson 用于序列化连接器句柄,因此插件必须使用 openLooKeng 提供的注释版本。

    有关示例 pom.xml 文件,请参见 openLooKeng 源代码树根目录下 presto-example-http 目录中的示例 HTTP 连接器。

    要在 openLooKeng 安装中添加自定义插件,请在 openLooKeng 插件目录中为该插件创建一个目录,并且在该目录中添加此插件的所有必需 JAR 文件。例如,对于名为 my-functions 的插件,您应在 openLooKeng 插件目录中创建 my-functions 目录,并在该目录中添加相关的 JAR 文件。

    默认情况下,插件目录是相对于 openLooKeng 安装目录的 plugin 目录,但可以使用配置变量 catalog.config-dir 来配置插件目录。为了使 openLooKeng 能够识别新插件,您必须重新启动 openLooKeng。