Flink Table源码中的Factory接口
1. 源码加上中文注释
package org.apache.flink.table.factories;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.configuration.ConfigOption;
import java.util.Set;
/**
* Flink Table & SQL API中从键值对列表中创建对象实例的各种工厂的基本接口。
*
* 一个工厂通过Class和factoryIdentifier()来唯一标识。
* 可用工厂的列表是通过Java的Service Provider Interfaces (SPI)来发现的。实现这个接口的类可以添加到JAR文件的META_INF/services/org.apache.flink.table.factories.Factory中。
* 每个工厂都声明了一组必需的和可选的选项。此信息在发现过程中不会被使用,但在生成文档和执行验证时非常有用。一个工厂可能会发现更多的(嵌套的)工厂,嵌套工厂的选项不能在该工厂的选项集中声明。
* 每个工厂在返回实例之前进行验证是其责任。
* 为了保持一致性,建议使用以下风格的ConfigOption键名:
* 尽量重用键名。可以参考其他工厂实现。
* 键名应以小写字母声明。使用"-"来分隔单词,而不是点号或驼峰命名法。
* 适当时,键名应具有层次结构。考虑如何在JSON或YAML文件中定义这样的层次结构(例如sink.bulk-flush.max-actions)。
* 在层次结构的情况下,尽量不要再次使用高级别作为键名(例如,使用sink.partitioner而不是sink.sink-partitioner),以保持键的长度。
* 可以模板化的键名,例如引用特定列的键名,应使用"#"作为占位符。例如,使用fields.#.min。
*/
@PublicEvolving
public interface Factory {
/**
* 在相同工厂接口中返回一个唯一的标识符。
* 为了保持一致性,标识符应声明为一个小写字母单词(例如kafka)。如果存在多个不同版本的工厂,则应使用"-"附加一个版本(例如elasticsearch-7)。
*/

本文详细解读了ApacheFlinkTableAPI中的Factory接口,介绍了工厂标识符、必需和可选配置选项的使用,以及其在根据配置参数动态创建对象实例中的应用。
最低0.47元/天 解锁文章
244

被折叠的 条评论
为什么被折叠?



