DataStream/Table API 的统一连接器

Unified connectors for DataStream/Table APIs

我正在为 Flink 1.14.4 编写一个简单的连接器 (source/sink),它主要包装官方 Kafka 连接器并自动设置自定义 serializers/deserializers。我对 FLIP-27 and FLIP-143 中引入的新 source/sink 接口的当前状态有些困惑。目前是否真的可以编写统一的连接器(即跨不同 API 工作的连接器,例如 DataStream/Table)?通过查看当前 Kafka 连接器的代码,我发现它同时具有旧版和新版,但据我所知,Table API 的连接器仍然仅依赖于旧版 API。另外,通过阅读官方文档:

Table API 似乎还不能使用新接口。更糟糕的是,我发现在 DataStream 部分只提到了源,这让我很困惑,它已经描述了新的方法:

但没有提到水槽。总的来说,我认为这让用户现在还不太了解如何创建自定义连接器。特别是,我希望 DataStream API 有一个等效的部分,即涵盖用户定义的源和接收器的创建,如上面为 Table API 给出的那样。

统一源和汇 API(FLIP-27 和 FLIP-143)的创建是为了为连接器创建一个接口,以便它们可以用于有界(批处理)和无界(流)数据。

这两个接口都允许构建一个 source/sink,您可以在 DataStream 或 Table/SQL API 中使用它。 FileSystem、Kafka 和 Pulsar 目前已经是这种情况(从即将发布的 Flink 1.15 开始)。

您说得对,当前文档没有明确说明这一点。目前,Flink 社区正在努力将连接器外部化(将它们中的每一个从 Flink 存储库移动到它们自己的单独存储库)并全面检查有关如何编写连接器的文档和指南。