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

请解释 Apache Flink 中的 DataStream 和 DataSet 分别代表什么,并说明它们之间的核心差异有哪些?

数据技术原理Apache Flink

考察说明

考查对 Flink 两种核心编程抽象的理解及其适用场景的区分。

回答思路

  1. 【回答框架 1】DataStream 是 Flink 用于处理无界数据流的抽象,基于流处理模型,数据按事件时间或处理时间持续到达,支持事件驱动、窗口操作和实时计算。
  2. 【回答框架 2】DataSet 是 Flink 用于处理有界数据集的抽象,基于批处理模型,数据一次性加载,适合离线分析,支持高效的批量迭代和排序。
  3. 【回答框架 3】主要区别在于数据的有界性、处理模型、容错机制和适用场景:DataStream 面向实时流,使用持续检查点;DataSet 面向静态批,使用批式恢复。
  4. 【回答框架 4】在 Flink 1.12 之后,DataSet 逐渐被 DataStream 统一,批处理可通过 DataStream 的执行模式实现,但概念上两者仍有区别。
  5. 【关键点 1】DataStream 处理无界流,DataSet 处理有界批。
  6. 【关键点 2】DataStream 基于流处理,DataSet 基于批处理。
  7. 【关键点 3】两者在容错和调度上不同,流用检查点,批用恢复。
  8. 【关键点 4】Flink 新版本中 DataSet 被 DataStream 统一。
  9. 【易错点 1】不要混淆 DataStream 和 DataSet 的适用场景,实时需求用流,离线用批。
  10. 【易错点 2】避免认为 DataSet 已完全废弃,在旧版本中仍存在。
  11. 【易错点 3】注意 Flink 版本差异,新特性可能改变两者关系。