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

请说明在 Spark Streaming 中集成 Kafka 的具体方式有哪些?

数据技术原理方案权衡Spark Streaming

考察说明

考查对 Spark Streaming 与 Kafka 集成方式的理解和掌握程度。

回答思路

  1. 【回答框架 1】Spark Streaming 与 Kafka 集成主要有两种方式:基于 Receiver 的方式和基于 Direct 的方式。基于 Receiver 的方式使用 Kafka 的高级 API,通过 Receiver 接收数据并存储在 Spark 的 executor 中,然后由 Spark Streaming 处理。
  2. 【回答框架 2】基于 Direct 的方式(Direct Approach)是更推荐的方式,它使用 Kafka 的低级 API,直接在每个批次中从 Kafka 的特定分区拉取数据,无需 Receiver,这样可以实现精确一次的处理语义,并且提高了吞吐量和可靠性。
  3. 【回答框架 3】两种方式的主要区别在于数据接收和容错机制:基于 Receiver 的方式可能出现数据丢失,需要启用 Write Ahead Log 来保证可靠性;而基于 Direct 的方式则利用 Kafka 的偏移量管理,保证了数据的强一致性。
  4. 【回答框架 4】在实际应用中,推荐使用 Direct 方式,因为它更高效、更可靠,并且简化了资源管理。
  5. 【关键点 1】基于 Receiver 的方式使用 Kafka 高级 API,可能丢失数据,需要 WAL。
  6. 【关键点 2】基于 Direct 的方式使用低级 API,精确一次处理,性能更好。
  7. 【关键点 3】Direct 方式直接管理 Kafka 偏移量,确保数据一致性和容错。
  8. 【易错点 1】不要混淆两种方式的数据语义和容错能力。
  9. 【易错点 2】避免在 Receiver 方式下忽略 WAL 配置导致数据丢失。