预定义的Sources 和 Sinks
一些基本的数据sources 和 sinks 作为Flink的一部分,总是可用。预定义的数据源包括从文件中读取、从目录中读取、从套接字中读取以及从集合和迭代中获取,预定义的数据sink支持写到文件中,作为标准输出或者标准错误输出以及写到套接字中。
捆绑的连接器(Boundled Connectors)
这些连接器提供与第三方系统接口的代码,目前这些连接器包括:
Apache Kafka(Source/Sink)
Apache Cassandra(Source/Sink)
Amazon Kinesis Streams(Source/Sink)
Elasticsearch(Sink)
Hadoop FileSystem(Sink)
RabbitMQ(Source/Sink)
Apache NiFi(Source/Sink)
Twitter Streaming API(Source)
请记住,要在应用程序中使用这些连接器之一,通常需要额外的第三方组件,例如数据存储服务或者消息队列。还需要注意本节中所列出的流连接器是Flink项目的一部分,包括在发布的源码包中,但是并不包括在二进制发布包中,进一步的说明在相应的章节中。
Apache Bahir中的连接器
另外的Flink 流连接器通过Apache Bahir来发布,包括:
Apache ActiveMQ(source/sink)
Apache Flume(sink)
Redis(sink)
Akka(sink)
Netty(Source)
通过Async I/O来丰富数据
使用连接器并不是数据输入输出Flink的唯一方式,为了丰富原始的数据流,一种通用的方式是通过Map或者FlatMap来查询一个外部数据库或者web 服务。Flink为Asynchronous I/O提供了一个API 来使得丰富数据更佳的高效和健壮。
可查询的状态
当一个Flink 应用推送大量的数据到一个外部存储系统时,可能会导致一个I/O瓶颈,如果涉及的数据写大于读的话,一个更好的方法是🈶️外部系统根据自己的需要来Flink中拉取。Queryable State 接口允许由Flink管理的状态也被外部系统访问来实现这一方法。