流连接器(Streaming Connectors)
预定义的源和接收器
Flink内置了一些基本数据源和接收器,并且始终可用。该预定义的数据源包括文件,目录和插座读书,并从摄取集合和迭代器的数据。该预定义的数据接收器支持写入文件,以输出和错误,并插槽。
捆绑连接器(Bundled Connectors)
连接器提供用于与各种第三方系统连接的代码。目前支持这些系统:
- Apache Kafka(源/汇)
- Apache Cassandra(接收器)
- 亚马逊Kinesis Streams(源/汇)
- Elasticsearch(接收器)
- Hadoop文件系统(接收器)
- RabbitMQ(源/汇)
- Apache NiFi(源/汇)
- Twitter Streaming API(来源)
请记住,要在应用程序中使用其中一个连接器,通常需要其他第三方组件,例如数据存储或消息队列的服务器。另请注意,虽然本节中列出的流连接器是Flink项目的一部分,并且包含在源版本中,但它们不包含在二进制分发版中。可以在相应的小节中找到进一步的说明。
Apache Bahir中的连接器
Flink的其他流处理连接器正在通过Apache Bahir发布,包括:
- Apache ActiveMQ(源/汇)
- Apache Flume(水槽)
- Redis(水槽)
- 阿卡(水槽)
- Netty(来源)
其他连接到Flink的方法
通过异步I / O进行数据丰富
使用连接器不是将数据输入和输出Flink的唯一方法。一种常见的模式是在一个Map
或多个FlatMap
中查询外部数据库或Web服务以丰富主数据流。Flink提供了一个用于异步I / O的API, 以便更有效,更稳健地进行这种丰富。
可查询状态
当Flink应用程序将大量数据推送到外部数据存储时,这可能会成为I / O瓶颈。如果所涉及的数据具有比写入更少的读取,则更好的方法可以是外部应用程序从Flink获取所需的数据。在可查询的状态界面,允许通过Flink被管理的状态,按需要查询支持这个。