概述
Spark SQL 的优化器有两种优化形式:一种是基于规定的优化形式 (Rule-Based Optimizer,简称为RBO);另一种是基于代价的优化形式(Cost-Based Optimizer,简称为CBO)。
RBO
RBO 依照已有的规则,进行规则匹配,所以不同的 SQL 写法间接决定执行效率不同,且 RBO 对数据不敏感,在表大小固定的状况下,无论数据如何变动,只要 SQL 写法不变,生成的执行计划就是固定的。
CBO
依据优化规定对 SQL 生成多个执行计划,根据统计信息(Statistics)和代价模型(Cost Model),计算得出代价最小的物理计划执行。
针对实际环境中SQL动态生成,无法优化,推荐使用 CBO。
结束
spark sql cbo与rbo考量 至此结束。