连接器和格式 #
Flink 应用程序可以通过连接器读取和写入各种外部系统。它支持多种格式,以便对数据进行编码和解码以匹配 Flink 的数据结构。
DataStream 和 Table API/SQL 都提供了连接器和格式的概述。
可用的组件 #
为了使用连接器和格式,您需要确保 Flink 可以访问实现了这些功能的组件。对于 Flink 社区支持的每个连接器,我们在 Maven Central 发布了两类组件:
flink-connector-<NAME>
这是一个精简 JAR,仅包括连接器代码,但不包括最终的第三方依赖项;flink-sql-connector-<NAME>
这是一个包含连接器第三方依赖项的 uber JAR;
这同样适用于格式。请注意,某些连接器可能没有相应的 flink-sql-connector-<NAME>
组件,因为它们不需要第三方依赖项。
uber/fat JAR 主要与SQL 客户端一起使用,但您也可以在任何 DataStream/Table 应用程序中使用它们。
使用组件 #
为了使用连接器/格式模块,您可以:
- 把精简 JAR 及其传递依赖项打包进您的作业 JAR;
- 把 uber JAR 打包进您的作业 JAR;
- 把 uber JAR 直接复制到 Flink 发行版的
/lib
文件夹内;
关于打包依赖项,请查看 Maven 和 Gradle 指南。有关 Flink 发行版的参考,请查看Flink 依赖剖析。
决定是打成 uber JAR、精简 JAR 还是仅在发行版包含依赖项取决于您和您的使用场景。如果您使用 uber JAR,您将对作业里的依赖项版本有更多的控制权;如果您使用精简 JAR,由于您可以在不更改连接器版本的情况下更改版本(允许二进制兼容),您将对传递依赖项有更多的控制权;如果您直接在 Flink 发行版的 /lib
目录里内嵌连接器 uber JAR,您将能够在一处控制所有作业的连接器版本。