Flink 为流处理和批处理分别提供了 DataStream API 和 DataSet API。正是这种高层的抽象和 flunent API 极大地便利了用户编写大数据应用。不过很多初学者在看到官方 Streaming 文档中那一大坨的转换时,常常会蒙了圈,文档中那些只言片语也很难讲清它们之间的关系。所以本文将介绍几种关键的数据流类型,它们之间是如何通过转换关联起来的。下图展示了 Flink 中目前支持的主要几种流的类型,以及它们之间的转换关系。
DataStream
DataStream是 Flink 流处理 API 中最核心的数据结构。它代表了一个运行在多个分区上的并行流。一个DataStream可以从StreamExecutionEnvironment通过env.addSource(SourceFunction)获得。
DataStream 上的转换操作都是逐条的,比如map(),flatMap(),filter()。DataStream 也可以执行rebalance(再平衡,用来减轻数据倾斜)和broadcaseted(广播)等分区转换。