Spark Structured Streaming 流处理深度解析:专栏导览
专栏定位
本专栏是「Spark-容错与状态管理深度解析」专栏的上层应用篇。容错专栏深入讲解了 Structured Streaming 的底层机制:Checkpoint 文件结构、WAL 写出、State Store 的读写路径。本专栏聚焦流处理编程模型:如何正确使用 Watermark 处理乱序数据、如何用 flatMapGroupsWithState 实现任意有状态逻辑、流-流 Join 的时间对齐语义,以及如何在生产中调优吞吐量与延迟。
目标读者:已有 Spark 批处理基础,希望系统掌握实时流处理开发与调优的工程师。
技术版本:Spark 3.3+,部分新特性(AvailableNow Trigger、Stateful Processing V2)注明版本要求。
专栏目录
| # | 文章标题 | 核心问题 |
|---|---|---|
| 01 | 微批执行模型:MicroBatch 与 Continuous Processing 的本质差异 | 为什么 Structured Streaming 默认是微批而不是真正的流?连续处理的代价是什么? |
| 02 | Source 与 Sink:DataSource V2 的流式读写接口 | Kafka Source 如何保证 Offset 精确管理?不同 Sink 的 Exactly-once 保证有何差异? |
| 03 | 输出模式深度解析:Append / Update / Complete 的适用边界 | 为什么聚合查询不能用 Append 模式?三种模式背后的语义差异是什么? |
| 04 | Watermark 全解:事件时间语义与延迟数据处理 | Watermark 是什么?推进逻辑是怎样的?多 Source 时 Watermark 如何对齐? |
| 05 | 触发器(Trigger):ProcessingTime / Once / AvailableNow / Continuous | 四种 Trigger 的使用场景与执行语义,AvailableNow 为何是批量 ETL 的最佳选择? |
| 06 | 窗口聚合:滚动窗口、滑动窗口与会话窗口的实现机制 | 三种窗口的定义与区别,窗口数据如何在 State Store 中存储?窗口何时被清理? |
| 07 | flatMapGroupsWithState:任意有状态逻辑的终极武器 | 如何用 GroupState 实现自定义状态机?超时机制(ProcessingTime vs EventTime)的底层原理 |
| 08 | 流-流 Join:两条流如何在时间维度上对齐 | 流-流 Join 为什么需要 Watermark?Join 的状态如何存储与清理?支持哪些 Join 类型? |
| 09 | dropDuplicates 与精确去重:Exactly-once 的应用层保障 | dropDuplicates 的状态语义,与 Watermark 结合后如何实现有界去重 |
| 10 | 流批一体查询:Static DataFrame 与 Streaming DataFrame 的混合使用 | 流和批如何在同一个查询中结合?Streaming Join Static 的语义限制是什么? |
| 11 | 监控与可观测性:StreamingQueryListener + Metrics + 告警 | 如何通过 Listener 接口获取流查询指标?关键监控指标(输入速率、处理速率、Watermark 延迟)的含义与告警设置 |
| 12 | 生产调优手册:吞吐量、延迟、背压与资源配置全攻略 | 如何在吞吐量和延迟之间做权衡?背压机制(maxOffsetsPerTrigger)的配置原则?State Store 调优 |
与其他专栏的关系
Spark-RDD核心原理解析
↓ 底层执行基础
Spark调度系统与执行模型
↓ Stage/Task 调度
Spark-Shuffle与内存管理
↓ 数据交换与内存
Spark-容错与状态管理深度解析 ← 底层机制(Checkpoint / State Store 内幕)
↕ 互补关系
Spark-Structured-Streaming流处理深度解析 ← 本专栏(编程模型 / 业务语义)
推荐阅读路径
快速上手路径(实际开发场景):01 → 02 → 03 → 04 → 05 → 12
深度进阶路径(理解底层语义):01 → 04 → 06 → 07 → 08 → 09
调优诊断路径(生产问题排查):11 → 12 → 07(状态 TTL)→ 04(Watermark 停滞)
关联专栏
- Spark 容错与状态管理:Checkpoint 与 State Store 的底层原理
- Spark SQL:Structured Streaming 基于 Spark SQL 引擎
- Kafka:最常用的流数据源
- Flink:流处理引擎的对比选型
- Delta Lake:Delta Lake 作为流批一体的 Sink