IT教程 ·

spark sql 执行计划天生案例

Python趣味入门02: 妥妥地安装配置Python(Windows版),Python趣味入门01:你真的了解Python么?,Python趣味入门01:你真的了解Python么?

媒介

一个SQL从词法理会、语法理会、逻辑实行计划、物理实行计划终究转换为能够实行的RDD,中心阅历了许多的步骤和流程。个中词法理会和语法理会均有ANTLR4完成,能够进一步进修ANTLR4的相干学问做进一步相识。

本篇文章重要对一个简朴的SQL生成的逻辑实行计划物理实行计划的做一个简朴地申明。

示例代码

case class Person(name: String, age: Long)
private def runBasicDataFrameExample2(spark: SparkSession): Unit = {
  import spark.implicits._
  val df: DataFrame = spark.sparkContext
    .parallelize(
      Array(
        Person("zhangsan", 10),
        Person("lisi", 20),
        Person("wangwu", 30))).toDF("name", "age")
  df.createOrReplaceTempView("people")
  spark.sql("select * from people where age >= 20").show()
}

生成逻辑物理实行计划示例

生成的逻辑和物理实行计划,右边的是依据QueryExecution的 toString 要领,获得的对应效果

 

spark sql 执行计划天生案例 IT教程 第1张

 

QueryExecution症结源码理会

对症结源码,本身做了简朴的理会。如下图:

spark sql 执行计划天生案例 IT教程 第2张

个中SparkSqlParser运用ASTBuilder生成UnResolved LogicalPlan。

末了

注重Spark SQL 从driver 提交经由词法理会、语法理会、逻辑实行计划、到可落地实行的物理实行计划。个中前三部份都是 spark catalyst 子模块的功用,与终究在哪一个SQL实行引擎上实行并没有多大关联。物理实行计划是后续转换为RDD的基本和必要条件。

本文对Spark SQL中症结步骤都有肯定的触及,也能够针对QueryExecution做后续的理会,发起修正SparkSQL 源码,做当地调试。后续会进一步理会,重要连系 《SparkSQL 内核理会》这本书以及本身在事情进修中碰到的种种问题,做进一步源码理会

TCP协议

参与评论