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 要领,获得的对应效果
QueryExecution症结源码理会
对症结源码,本身做了简朴的理会。如下图:
个中SparkSqlParser运用ASTBuilder生成UnResolved LogicalPlan。
末了
注重Spark SQL 从driver 提交经由词法理会、语法理会、逻辑实行计划、到可落地实行的物理实行计划。个中前三部份都是 spark catalyst 子模块的功用,与终究在哪一个SQL实行引擎上实行并没有多大关联。物理实行计划是后续转换为RDD的基本和必要条件。
本文对Spark SQL中症结步骤都有肯定的触及,也能够针对QueryExecution做后续的理会,发起修正SparkSQL 源码,做当地调试。后续会进一步理会,重要连系 《SparkSQL 内核理会》这本书以及本身在事情进修中碰到的种种问题,做进一步源码理会
TCP协议