火花SQL是催化剂优化器的核心,它利用高级编程语言特性(例如Scala的模式匹配和准引号)小说的方式来构建一个可扩展的查询优化器。Scala中的催化剂是基于函数式编程构造和设计这些关键的两个目的:
催化剂包含一个通用库代表树木和应用规则来操纵它们。这个框架之上,图书馆具体关系查询处理(例如,表达式,逻辑查询计划),和几套规则处理查询执行的不同阶段:分析、逻辑优化,物理规划和代码生成查询Java字节码编译的部分。对于后者,它使用另一个Scala特性,但是,这很容易生成代码在运行时从可组合表达式。催化剂还提供了几个公开扩展点,包括外部数据源和用户定义的类型。催化剂,同时支持基于规则和基于成本的优化。