参考文献:The Internals of Spark SQL
在 Dataset 上执行 action 操作时,都会经历下述过程,将对 Dataset 的 action 及其之前的算子操作转化成 DAG 对 RDD 的操作。RDD 是 Spark 系统中最底层、最基础的 API 层, Dataset (或其前身 DataFrame)都是为了方便用户提供的更高层次的 API 抽象。
- Logical Analysis
- Caching Replacement
- Logical Query Optimization (using rule-based and cost-based optimizations)
- Physical Planning
- Physical Optimization (e.g. Whole-Stage Java Code Generation or Adaptive Query Execution)
- Constructing the RDD of Internal Binary Rows
从 SQL 语句的解析一直到提交前,上述的转换过程都是 driver 端进行,不涉及分布式环境。
Logical Optimization
PushDownPredicate