Flink Factory接口源码解析

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

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)。
     */
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值