spark sql源码浅析

spark 源码简单分析
sparksql 作为spark1.0所支持的lib库中唯一新增加的lib库,可见其重要地位。
分析内容:

  • spark sql执行流程;
  • hive on spark 和 hive on hadoop 的比较;
  1. spark sql执行流程分析

    首先我们来分析下sql的通用执行过程:
    比如说: select n1,n2,n3 from tableN where n1 = ?
    其中n1,n2,n3 是需要返回的结果,tableN 是数据源,n1=? 是查询条件。
    sql 语句分析执行过程的步骤:
    - 语法解析;
    - 操作bind;
    - 优化策略;
    - 执行。
    语法解析完成会形成一颗语法树,树中的每个节点便是执行的规则,整个树就是执行策略。
    而接下来要解读的是sql on spark,无可厚非,也是要完成解析,优化,执行三大过程。
    - sqlParser 生成逻辑计划树;
    - 解析器和优化器在多个rule的基础上作用于逻辑计划树上;
    - 由优化后的逻辑计划生成物理计划;
    - 生成sparkRDD;
    - spark执行RDD。
    一般sparksql这种新特性会引入sqlContext和schemaRDD。

  2. hive on spark 和 hive on hadoop

    hiveQL 执行过程:
    - 将sql解析为语法树;
    - 语义分析;
    - 生成逻辑计划;
    - 生成查询计划;
    - 优化器。
    - 生成mapreduce的job。
    在spark中提供了hiveContext接口,而hiveContext继承自sqlContext。
    而hive中涉及到两种数据:
    - schema data 数据库的定义和表结构,存储在metastore中;
    - Row data 分析的文件本身。

    持续更新和修改中…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章