在学习flink如何实现批处理之前,需要先了解什么是有界流和无界流。
重点:理解有界流无界流的定义
Flink中有界流(Bounded Stream)和无界流(Unbounded Stream)是数据处理的两种核心抽象,主要区别如下:

一、数据特性

  1. 边界定义

    • 有界流:具有明确的开始和结束点(如静态文件、数据库表)
    • 无界流:只有开始点,数据持续产生无终止(如Kafka消息流、IoT传感器数据)
  2. 数据完整性

    • 有界流支持全量数据处理前排序,无界流需依赖事件时间或水印机制保证顺序

二、处理方式

维度有界流无界流
执行模式批处理(Batch)流处理(Streaming)
窗口机制全局窗口(可省略)需显式定义时间/计数窗口
触发策略一次性处理持续触发(如时间推进)

三、技术实现差异

  1. 状态管理
    无界流需持续维护状态(如聚合中间结果),而有界流在作业完成后可释放状态

  2. 容错机制
    无界流依赖检查点(Checkpoint)实现精确一次语义,有界流可通过重算实现容错

注:Flink通过统一运行时引擎实现两种模式的转换,如readTextFile()读取有界流,addSource()接入无界流

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐