Wait the light to fall

模块

焉知非鱼

Modules

模块测试版

模块允许用户扩展 Flink 的内置对象,比如定义一些行为类似 Flink 内置函数的功能。它们是可插拔的,虽然 Flink 提供了一些预建模块,但用户可以编写自己的模块。

例如,用户可以定义自己的地理函数,并将其作为内置函数插入 Flink,以便在 Flink SQL 和 Table API 中使用。又比如,用户可以加载一个现成的 Hive 模块,将 Hive 内置函数作为 Flink 内置函数使用。

模块类型 #

CoreModule #

CoreModule 包含了 Flink 的所有系统(内置)功能,并且默认被加载。

HiveModule #

HiveModule 作为 Flink 的系统函数,向 SQL 和 Table API 用户提供 Hive 内置函数。Flink 的 Hive 文档提供了设置该模块的全部细节。

用户定义模块 #

用户可以通过实现 Module 接口来开发自定义模块。为了在 SQL CLI 中使用自定义模块,用户应该通过实现 ModuleFactory 接口同时开发一个模块和它对应的模块工厂。

模块工厂定义了一组属性,用于在 SQL CLI 引导时配置模块。属性被传递给发现服务,服务会尝试将属性与模块工厂进行匹配,并实例化一个相应的模块实例。

命名空间和解析顺序 #

模块提供的对象被认为是 Flink 系统(内置)对象的一部分;因此,它们没有任何命名空间。

当有两个同名的对象存在于两个模块中时,Flink 总是将对象引用解析为第一个加载模块中的对象。

模块 API #

装载和卸载模块 #

用户可以在现有的 Flink 会话中加载和卸载模块。

  • Scala
tableEnv.loadModule("myModule", new CustomModule());
tableEnv.unloadModule("myModule");
  • YAML

所有使用 YAML 定义的模块都必须提供一个 type 属性来指定类型。以下类型是开箱即用的。

Catalog Type Value
CoreModule core
HiveModule hive
modules:
   - name: core
     type: core
   - name: myhive
     type: hive

列出可用的模块 #

  • Scala
tableEnv.listModules();
  • SQL
Flink SQL> SHOW MODULES;

原文链接: https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/modules.html