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

请解释 Apache Spark 中的 Structured Streaming 概念,并阐述它与传统 Spark Streaming 在编程模型、数据处理方式和性能表现上的主要差异。

数据技术原理Apache Spark

考察说明

考查对 Spark 两大流处理框架的理解深度,重点在编程模型与实时性差异。

回答思路

  1. 【回答框架 1】Structured Streaming 是基于 Spark SQL 引擎的流式处理框架,将数据流视为无界表,每批次数据作为表的新行,使用 DataFrame API 进行声明式查询,系统自动优化执行。
  2. 【回答框架 2】Spark Streaming 基于 RDD,将数据流划分为微批次,以 DStream(离散化流)表示,开发需使用 map、reduceByKey 等 RDD 风格操作,延迟通常较高。
  3. 【回答框架 3】核心差异在于编程模型:Structured Streaming 提供高层的 DataFrame 操作,支持事件时间和窗口聚合,并保证端到端精确一次,而 Spark Streaming 提供的是底层 RDD 操作,窗口基于处理时间。
  4. 【回答框架 4】性能方面,Structured Streaming 受益于 Catalyst 优化器和钨丝执行引擎,吞吐量更高,延迟更低,而 Spark Streaming 的批处理模式导致更高延迟。
  5. 【回答框架 5】Structured Streaming 还支持持续处理模式(实验性),可实现毫秒级延迟,而 Spark Streaming 仅支持微批次。选择时需考虑延迟要求、API 偏好和生态整合,Structured Streaming 更现代化并逐渐成为首选。
  6. 【关键点 1】Structured Streaming 将流视为无界表,Spark Streaming 使用 DStream。
  7. 【关键点 2】Structured Streaming 提供精确一次语义,Spark Streaming 至少一次。
  8. 【关键点 3】Structured Streaming 支持事件时间与窗口聚合,Spark Streaming 仅处理时间。
  9. 【关键点 4】Structured Streaming 性能更高,延迟更低。
  10. 【关键点 5】新项目推荐使用 Structured Streaming。
  11. 【易错点 1】混淆事件时间与处理时间,导致窗口结果不准确。
  12. 【易错点 2】误认为 Spark Streaming 已废弃,实际仍维护但非首选。
  13. 【易错点 3】忽略 Structured Streaming 的微批次延迟,不适合毫秒级场景(除非持续处理)。