大数据计算数据流
DataStream 是什么?
Flink 里最核心的抽象,一条条事件组成的流,可以无限长
类比:传送带上的零件,一个接一个过来,永远不知道什么时候停
流是基础,批是特例
Flink 把有界数据(批)也当成一种特殊的流:读完就结束的流。所以同一套 API 既能处理实时数据,也能处理历史文件,只是“结束条件”不同。
常用算子
和 Spark 类似,但语义是“每条数据触发一次”。
- map / filter / flatMap:一对一或一对多转换
- keyBy:按 key 分区,相同 key 一定进同一个并行子任务
- window:把无限流切成有限片段
- connect / union:合并多条流
并行度
每个算子可以有自己的并行度,keyBy 之后相同 key 的数据会固定路由到同一个 subtask。这也是 Flink 能维护“按 key 的状态”的前提——状态不需要跨节点同步。