預(yù)定義的Sources 和 Sinks
一些基本的數(shù)據(jù)sources 和 sinks 作為Flink的一部分守伸,總是可用只损。預(yù)定義的數(shù)據(jù)源包括從文件中讀取呆盖、從目錄中讀取反肋、從套接字中讀取以及從集合和迭代中獲取那伐,預(yù)定義的數(shù)據(jù)sink支持寫到文件中,作為標(biāo)準(zhǔn)輸出或者標(biāo)準(zhǔn)錯誤輸出以及寫到套接字中囚玫。
捆綁的連接器(Boundled Connectors)
這些連接器提供與第三方系統(tǒng)接口的代碼喧锦,目前這些連接器包括:
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)
請記住读规,要在應(yīng)用程序中使用這些連接器之一抓督,通常需要額外的第三方組件,例如數(shù)據(jù)存儲服務(wù)或者消息隊列束亏。還需要注意本節(jié)中所列出的流連接器是Flink項目的一部分铃在,包括在發(fā)布的源碼包中,但是并不包括在二進(jìn)制發(fā)布包中,進(jìn)一步的說明在相應(yīng)的章節(jié)中定铜。
Apache Bahir中的連接器
另外的Flink 流連接器通過Apache Bahir來發(fā)布阳液,包括:
Apache ActiveMQ(source/sink)
Apache Flume(sink)
Redis(sink)
Akka(sink)
Netty(Source)
通過Async I/O來豐富數(shù)據(jù)
使用連接器并不是數(shù)據(jù)輸入輸出Flink的唯一方式,為了豐富原始的數(shù)據(jù)流揣炕,一種通用的方式是通過Map或者FlatMap來查詢一個外部數(shù)據(jù)庫或者web 服務(wù)帘皿。Flink為Asynchronous I/O提供了一個API 來使得豐富數(shù)據(jù)更佳的高效和健壯。
可查詢的狀態(tài)
當(dāng)一個Flink 應(yīng)用推送大量的數(shù)據(jù)到一個外部存儲系統(tǒng)時畸陡,可能會導(dǎo)致一個I/O瓶頸鹰溜,如果涉及的數(shù)據(jù)寫大于讀的話,一個更好的方法是???外部系統(tǒng)根據(jù)自己的需要來Flink中拉取丁恭。Queryable State 接口允許由Flink管理的狀態(tài)也被外部系統(tǒng)訪問來實現(xiàn)這一方法曹动。