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 分析的文件本身。

    持續更新和修改中…

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