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

请你阐述 Apache Spark 中 Catalyst 优化器利用代价模型来改进查询计划的具体过程和机制。

数据技术原理Apache Spark

考察说明

考查对 Spark Catalyst 优化器内部工作原理,特别是基于代价的优化(CBO)的理解。

回答思路

  1. 【回答框架 1】Catalyst 优化器是 Spark SQL 的查询优化框架,采用树结构表示逻辑计划与物理计划,通过规则和代价模型进行优化。
  2. 【回答框架 2】逻辑计划阶段进行基于规则的优化,如谓词下推、列剪裁,随后基于代价模型(CBO)对执行计划进行估计与选择。
  3. 【回答框架 3】基于代价模型时,Catalyst 利用统计信息(如表大小、列基数、选择率)估算各候选物理计划的代价,选取最小代价方案,生成物理计划。
  4. 【回答框架 4】最终生成可执行代码,通过 Tungsten 优化,形成高效的 RDD 计算任务。
  5. 【关键点 1】Catalyst 采用树形结构表示计划,通过规则优化和代价估算进行优化。
  6. 【关键点 2】CBO 依据统计信息估算代价,选择最优物理计划。
  7. 【易错点 1】不能断言 CBO 总能找出最优计划,统计信息缺失时可能退化为启发式选择。
  8. 【易错点 2】代价模型是估算,实际执行代价可能因数据倾斜或资源变化而偏离。