催化剂优化器

回到术语表
Spark SQL的核心是Catalyst优化器,它以一种新颖的方式利用高级编程语言特性(例如Scala的模式匹配和准引号)来构建可扩展的查询优化器。Catalyst基于Scala中的函数式编程结构,主要有以下两个目的:
  • 轻松地向Spark SQL添加新的优化技术和特性
  • 允许外部开发人员扩展优化器(例如,添加数据源特定的规则,支持新的数据类型,等等)
催化剂优化图Catalyst包含一个通用库,用于表示树并应用规则来操作它们。在此框架之上,它具有特定于关系查询处理的库(例如,表达式、逻辑查询计划),以及几组处理查询执行的不同阶段的规则:分析、逻辑优化、物理规划和将部分查询编译为Java字节码的代码生成。对于后者,它使用了另一个Scala特性,即准引号,这使得在运行时可以很容易地从可组合表达式生成代码。Catalyst还提供了几个公共扩展点,包括外部数据源和用户定义的类型。此外,Catalyst支持基于规则和基于成本的优化。(glossary-cta)
回到术语表