数据岗位面试题更新 2026-08-05

在实际工程中,我们如何将 Apache Druid 与 Flink 或 Spark Streaming 结合,以实现对实时流数据的高效摄入与查询?

数据风险判断系统设计技术选型Apache DruidSpark Streaming

考察说明

本题考查对 Druid 实时数据摄入机制的理解,以及将其与主流流处理框架集成的基本设计与要点。

回答思路

  1. 【回答框架 1】Druid 通过 Tranquility 或 Kafka Indexing Service 消费实时流数据。Tranquility 支持从 Flink 或 Spark Streaming 推送到 Druid,而 Kafka Indexing Service 则直接消费 Kafka 中的流数据。
  2. 【回答框架 2】集成路径主要有两条:一是 Flink/Spark Streaming 将处理后的数据写入 Kafka,再由 Druid 的 Kafka Indexing Service 摄入;二是通过 Tranquility 将数据直接推送到 Druid 的实时节点。推荐前一种,因为解耦且扩展性好。
  3. 【回答框架 3】数据摄入时需定义好 Druid 的 datasource 的 schema,包括时间戳列、维度列和指标列。实时摄入需注意窗口聚合(如使用 aggregation 去重或 rollup)以控制数据量。
  4. 【回答框架 4】为保证数据不丢,需配置 Druid 的持久化机制(如将实时段定期合并为历史段),并结合 Kafka 的 offset 管理实现 at-least-once 消费。查询侧,Druid 支持实时和批量数据的统一查询。
  5. 【关键点 1】Druid 集成 Flink/Spark Streaming 的核心是数据摄入链路设计。
  6. 【关键点 2】通常采用 Kafka 作为中间缓冲,由 Druid Kafka Indexing Service 消费。
  7. 【关键点 3】Schema 设计需明确时间戳、纬度和指标,并合理设置聚合与 rollup。
  8. 【关键点 4】使用 Kafka 的 offset 管理实现消费进度跟踪,保证数据不丢。
  9. 【关键点 5】Druid 实时摄取与历史段合并机制支撑近实时查询能力。
  10. 【易错点 1】不能直接使用 Tranquility 和 Kafka Indexing Service 两个方案完全等同,它们适用场景和运维成本不同。
  11. 【易错点 2】忽略数据延迟敏感度,将导致实时摄入失败或数据积压。
  12. 【易错点 3】仅依靠 Druid 实现精确一次投递不可行,需结合幂等设计和 offset 管理。