跳到主要内容

离线数仓 vs 实时数仓

问题

离线数仓和实时数仓有什么区别?Lambda 和 Kappa 架构是什么?

答案

离线数仓 vs 实时数仓

对比离线数仓实时数仓
数据延迟T+1(次日出数)秒级 ~ 分钟级
计算引擎Hive / Spark BatchFlink / Spark Streaming
存储HDFS / HiveKafka / ClickHouse / Doris
调度方式定时批量(Airflow)流式持续计算
适用场景日报、月报、历史分析实时监控、实时看板
成本较低较高

Lambda 架构

同时维护一套批处理链路和一套流处理链路:

优点缺点
批处理保准确性两套代码维护成本大
流处理保实时性结果合并复杂
容错性好数据一致性难保证

Kappa 架构

只保留流处理,取消批处理层:

优点缺点
一套代码需要消息队列长期存储
维护简单复杂计算(如全量 JOIN)难做
逻辑统一回放成本高

流批一体(趋势)

现代方案(如 Apache Flink + Iceberg/Hudi)可以用同一套代码同时支持流处理和批处理。

如何选择

需求推荐架构
只有离线报表纯离线数仓
部分实时指标 + 离线报表Lambda
全量实时化 + 技术团队强Kappa
新项目/现代技术栈流批一体

常见面试问题

Q1: Lambda 和 Kappa 的核心区别?

答案

  • Lambda:批+流两条链路,批保证准确,流保证实时
  • Kappa:只有流一条链路,需要重算就回放消息
  • Lambda 更成熟但维护成本重,Kappa 更简洁但对消息系统要求高

Q2: 你们为什么要建实时数仓?

答案(回答思路):

  1. 业务需要实时看到数据(如大促监控、实时 GMV)
  2. 离线 T+1 已经无法满足运营决策需求
  3. 选择了 Flink + ClickHouse 的实时链路
  4. 实时层做核心指标,离线层做全量明细

Q3: 实时数仓的数据质量怎么保证?

答案

  • 上游:Kafka 消息 Schema 校验、幂等写入
  • 中间:Flink Checkpoint 保证 Exactly-Once
  • 下游:实时数仓 vs 离线数仓对数,发现差异及时修复
  • 监控:核心指标设阈值告警

相关链接