中间件速查手册
Compare · 2 个对象

Spark vs Flink

批处理之王与流处理之王:延迟、状态、生态三张表看完就能选
从谁的角度看
Spark vs Flink 对比表
对比维度
Spark
批处理为主,生态最全
Flink
原生流处理,状态能力强
定位与模型
核心抽象RDD / DataFrame,先描述 DAG 再执行DataStream,数据一条条流过算子
流处理方式微批(Structured Streaming),把流切成小批跑原生流,逐条处理
流批一体批为主,流是特例流为主,批是有界的流
性能与延迟
处理延迟微批延迟 100ms~秒级毫秒级,端到端亚秒
吞吐大批量吞吐极高,离线跑批首选吞吐也高,但更偏重低延迟与状态
功能特性
状态管理需自己接外部存储(Redis/HBase)或 mapWithState内建 Keyed State,支持大状态与 TTL
事件时间支持 Watermark,但受微批粒度限制Watermark + 迟到数据 + 会话窗口,最完整
Exactly-Once幂等写 + checkpoint,端到端需业务配合Checkpoint + 两阶段提交,链路级保证
SQL 与 MLSpark SQL 成熟,MLlib / GraphX 生态最全Flink SQL 够用,ML 生态较弱
运维与生态
部署依赖YARN / K8s / Standalone,依赖较轻YARN / K8s,状态大时依赖 HDFS + RocksDB
上手难度中,SQL 就能跑起来较难,时间语义和状态需要理解
一句话选型
什么时候选它离线 ETL、机器学习、已有 Hive 体系、准实时(秒级)报表实时风控、实时大屏、CEP、需要大状态和毫秒延迟

点某一行可以高亮该维度,方便逐条横向读;移动端左右滑动查看全部列。

选型建议

Spark

团队已有数仓、主要跑 T+1 和小时级任务、想一套代码兼顾批和准实时,选 Spark 最省事。

Flink

业务对延迟敏感(风控、告警、实时推荐)、需要复杂状态和事件时间语义,直接上 Flink。

一句话结论

一句话:离线与准实时选 Spark,真实时选 Flink。两者不是替代关系,很多公司是 Spark 跑批、Flink 跑流,共用一套 Kafka 和数仓。

其他对比