sparksql解析流程


1、sparkSql處理核心:Catalyst工作流程(本質:把sql、dataframe相結合,以樹tree的形式來存儲、優化)

2、catalyst工作流程

1)Parser(解析器):SqlParser生成LogicPlan Tree

主要是先進行詞法分析,再進行語法非分析

詞法分析:將輸入的sql語句串解析為一個一個的token

語法分析:在詞法分析的基礎上,將單詞序列組合成各類語法短語,組成各個LogicPlan

2)Analyser:遍歷整個語法樹,對樹上的每個節點進行數據類型綁定以及函數綁定。

根據元數據表解析為包含必要列的表,並且相應字段解析為相應的數據類型,相應的計算邏輯解析為對應的函數。

3)Optimizer:是Catalyst的核心

基於規則優化實際上對語法樹再做一次遍歷,模式匹配能夠滿足特定細節的節點,再進行相應的等價變換

經典規則:謂詞下推、常量累加、和列值裁剪

4)Physical Planning:物理計划層

用物理操作算子產生一個或者多個物理計划。然后用cost模型選擇一個物理計划。目前基於 cost-based的優化僅僅用於選擇join算法。

對已知的很小的relations,sparksql會選擇使用Spark 的提供的點對點的廣播功能實現 Broadcast  join。

3、內存管理 Tungsten 內存管理器-- off-heap

本質:突破JVM內存管理限制,分配堆外內存。

JVM:GC帶來時間開銷,可能出現“假死” 情況

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM