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

请阐述 Spark 中 Transformation 操作与 Action 操作各自的定义,并说明它们在执行机制上的核心差异。

数据技术原理Apache Spark

考察说明

考查对 Spark 计算模型中最基本操作类型的理解,以及能否说清惰性求值与作业触发的执行机制。

回答思路

  1. 【回答框架 1】Transformation 是对 RDD 等分布式数据集的转换操作,例如 map、filter、flatMap、reduceByKey。它定义新的数据集但不会立即执行计算,而是构建成有向无环图(DAG)形式的血缘关系,具有惰性求值特性,多个 Transformation 会合并到同一个作业中执行。
  2. 【回答框架 2】Action 是触发实际计算的算子,例如 collect、count、saveAsTextFile、foreach。调用 Action 会提交作业,从 DAG 的源头开始计算,并产生结果返回给驱动程序或写出外部存储,Action 的每一次调用都会生成一个新的作业。
  3. 【回答框架 3】两者的区别主要在触发时机和返回类型:Transformation 返回新的数据集且不触发计算,Action 返回值或输出且触发计算。同时惰性执行能让 Spark 通过血缘关系和 DAG 优化器对计算流水线进行优化,减少不必要的中间数据物化。
  4. 【关键点 1】Transformation 是惰性的,只构建血缘 DAG,不触发作业执行。
  5. 【关键点 2】Action 是触发点,每次调用都会提交一个作业并执行计算。
  6. 【关键点 3】Transformation 返回新数据集,Action 返回结果或写入外部系统。
  7. 【易错点 1】不要认为窄依赖与宽依赖是 Transformation 与 Action 的差异,它们是依赖类型的两类划分。
  8. 【易错点 2】不要误认为 Action 只能触发现有 DAG 的计算,每个 Action 实际是重新提交作业,因此重复 Action 会导致重复计算。
  9. 【易错点 3】不要混淆惰性求值一定会减少计算量,具体优化效果还取决于血缘设计、缓存和 DAG 剪枝。