首页/数据/数据工程与 ETL 速查/批处理与流处理概念对比
本包目录(311 条)
管道基础52 条
Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

批处理与流处理概念对比

批处理按批次处理有界数据,吞吐高、补数简单;流处理持续处理无界数据,端到端延迟低。多数团队批流并存:流做实时看板,批做口径复盘与补数。

批处理一次读取一段有界数据,跑完即结束
流处理数据持续到达,作业常驻运行
折衷形态微批(micro-batch)按小间隔切批

对比项

对比项批处理流处理
数据范围有界(文件/分区)无界(持续事件流)
延迟量级分钟到小时毫秒到秒(取决于链路)
吞吐与成本高吞吐、按需启停常驻资源,空闲也占位
补数与重跑改分区重跑即可需要重置位点或从快照重放
典型引擎Spark、Hive、MapReduceFlink、Kafka Streams、Structured Streaming

Structured Streaming 最小示例

Structured Streaming 最小示例
spark.readStream.format('kafka') \
    .option('subscribe', 'orders') \
    .load() \
    .writeStream.format('parquet') \
    .option('checkpointLocation', '/ck/orders') \
    .start('/warehouse/orders_stream')
批流统一 SQL 已成趋势:Flink SQL 与 Spark SQL 都能跑批也能跑流,加工逻辑可尽量共用一份 SQL。

易错点

  • 流作业长期运行要监控状态大小与 checkpoint 耗时,否则重启恢复会越来越慢
  • 把大批量历史回灌直接塞进流作业容易压爆反压链路,历史数据用批任务补

数据来源与参考

  • Apache Flink 官方文档 Concepts: Batch vs Streaming
  • Structured Streaming Programming Guide(Apache Spark)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌