【问题标题】:What is the role of Catalyst optimizer and Project TungstenCatalyst 优化器和 Project Tungsten 的作用是什么
【发布时间】:2021-04-21 22:24:39
【问题描述】:
我不清楚 Catalyst 优化器和 Project Tungsten 的作用。
我的理解是 Catalyst 优化器将从逻辑计划生成优化的物理计划。然后代码生成器将采用优化的物理计划来发出 Rdd。
代码生成器是 Project Tungsten 或 Catalyst Optimizer 的一部分吗?代码生成器也叫“全阶段代码生成器”吗?
【问题讨论】:
标签:
apache-spark
apache-spark-sql
catalyst-optimizer
【解决方案1】:
从 Databricks 或其他在线资源中查看 Glossar 应该可以澄清您的疑问:
“Tungsten 是对 Apache Spark 执行引擎进行更改的伞形项目的代号,该引擎专注于显着提高 Spark 应用程序的内存和 CPU 效率,以使性能更接近现代硬件的极限。”
Catalyst 优化器获取您的代码并将其转换为执行计划,最终生成用于 JVM 的紧凑代码。它经历了如下图所示的四个转型阶段:
请注意,“代码生成”阶段是 Catalyst Optimizer 中的第四个阶段。更多细节在后续部分。
“Whole-Stage CodeGen 也称为 Whole-Stage Java Code Generation,它是 Spakr SQL 中的一个物理查询优化阶段,它将多个物理操作组合在一起形成一个 Java 函数。”