flink批处理-有界流和无界流
·
在学习flink如何实现批处理之前,需要先了解什么是有界流和无界流。
重点:理解有界流无界流的定义
Flink中有界流(Bounded Stream)和无界流(Unbounded Stream)是数据处理的两种核心抽象,主要区别如下:
一、数据特性
-
边界定义
- 有界流:具有明确的开始和结束点(如静态文件、数据库表)
- 无界流:只有开始点,数据持续产生无终止(如Kafka消息流、IoT传感器数据)
-
数据完整性
- 有界流支持全量数据处理前排序,无界流需依赖事件时间或水印机制保证顺序
二、处理方式
| 维度 | 有界流 | 无界流 |
|---|---|---|
| 执行模式 | 批处理(Batch) | 流处理(Streaming) |
| 窗口机制 | 全局窗口(可省略) | 需显式定义时间/计数窗口 |
| 触发策略 | 一次性处理 | 持续触发(如时间推进) |
三、技术实现差异
-
状态管理
无界流需持续维护状态(如聚合中间结果),而有界流在作业完成后可释放状态 -
容错机制
无界流依赖检查点(Checkpoint)实现精确一次语义,有界流可通过重算实现容错
注:Flink通过统一运行时引擎实现两种模式的转换,如
readTextFile()读取有界流,addSource()接入无界流
更多推荐



所有评论(0)