Spark SQL 原理解析

DAGScheduler and PhysicalPlan

Posted by sincosmos on August 23, 2019

参考文献:The Internals of Spark SQL

在 Dataset 上执行 action 操作时,都会经历下述过程,将对 Dataset 的 action 及其之前的算子操作转化成 DAG 对 RDD 的操作。RDD 是 Spark 系统中最底层、最基础的 API 层, Dataset (或其前身 DataFrame)都是为了方便用户提供的更高层次的 API 抽象。

  1. Logical Analysis
  2. Caching Replacement
  3. Logical Query Optimization (using rule-based and cost-based optimizations)
  4. Physical Planning
  5. Physical Optimization (e.g. Whole-Stage Java Code Generation or Adaptive Query Execution)
  6. Constructing the RDD of Internal Binary Rows 从 SQL 语句的解析一直到提交前,上述的转换过程都是 driver 端进行,不涉及分布式环境。

    Logical Optimization

    PushDownPredicate