请你阐述 Apache Spark 中 Catalyst 优化器利用代价模型来改进查询计划的具体过程和机制。
考察说明
考查对 Spark Catalyst 优化器内部工作原理,特别是基于代价的优化(CBO)的理解。
回答思路
- 【回答框架 1】Catalyst 优化器是 Spark SQL 的查询优化框架,采用树结构表示逻辑计划与物理计划,通过规则和代价模型进行优化。
- 【回答框架 2】逻辑计划阶段进行基于规则的优化,如谓词下推、列剪裁,随后基于代价模型(CBO)对执行计划进行估计与选择。
- 【回答框架 3】基于代价模型时,Catalyst 利用统计信息(如表大小、列基数、选择率)估算各候选物理计划的代价,选取最小代价方案,生成物理计划。
- 【回答框架 4】最终生成可执行代码,通过 Tungsten 优化,形成高效的 RDD 计算任务。
- 【关键点 1】Catalyst 采用树形结构表示计划,通过规则优化和代价估算进行优化。
- 【关键点 2】CBO 依据统计信息估算代价,选择最优物理计划。
- 【易错点 1】不能断言 CBO 总能找出最优计划,统计信息缺失时可能退化为启发式选择。
- 【易错点 2】代价模型是估算,实际执行代价可能因数据倾斜或资源变化而偏离。