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

请介绍在 Spark 中持久化 RDD 的方式,以及 Spark 提供的常用持久化级别有哪些?

数据技术原理Apache Spark

考察说明

考察对 Spark RDD 缓存与持久化机制及各级别语义的理解。

回答思路

  1. 【回答框架 1】RDD 持久化通过调用 persist 或 cache 方法实现,cache 等价于使用 MEMORY_ONLY 级别。持久化将 RDD 的计算结果存储在内存或磁盘中,避免多次行动操作时重复计算,提升迭代或复用场景的性能。
  2. 【回答框架 2】常见持久化级别包括 MEMORY_ONLY、MEMORY_AND_DISK、MEMORY_ONLY_SER、MEMORY_AND_DISK_SER 和 DISK_ONLY。MEMORY_ONLY 将 RDD 作为反序列化对象存入内存,内存不足时分区丢失并重新计算;MEMORY_AND_DISK 在内存放不下时溢写磁盘,避免重新计算。
  3. 【回答框架 3】MEMORY_ONLY_SER 和 MEMORY_AND_DISK_SER 需将数据序列化后存储,减少内存占用但增加序列化开销;DISK_ONLY 全部存入磁盘,适合数据量大且内存紧张的场景。此外还有带副本的级别如 MEMORY_ONLY_2 等,用于提升容错性,但增加存储开销。
  4. 【回答框架 4】选择持久化级别需权衡内存占用、CPU 序列化开销、数据重新计算的代价以及容错需求。优先考虑内存级别,若内存不足再考虑磁盘溢写,数据重要且分区丢失代价高时使用副本级别。
  5. 【关键点 1】cache 等同于 MEMORY_ONLY。
  6. 【关键点 2】MEMORY_AND_DISK 在内存不足时溢写磁盘,避免重新计算。
  7. 【关键点 3】序列化级别减少内存占用但增加 CPU 开销。
  8. 【关键点 4】带副本级别提高容错性但增加存储成本。
  9. 【易错点 1】持久化只能避免重复计算,并不保证数据绝对可靠,节点故障后仍可能丢失。
  10. 【易错点 2】MEMORY_ONLY 在内存不足时分区被丢弃,后续使用会重新计算,可能导致性能恶化。