乙個sql從詞法解析、語法解析、邏輯執行計畫、物理執行計畫最終轉換為可以執行的rdd,中間經歷了很多的步驟和流程。其中詞法分析和語法分析均有antlr4完成,可以進一步學習antlr4的相關知識做進一步了解。
本篇文章主要對乙個簡單的sql生成的邏輯執行計畫物理執行計畫的做乙個簡單地說明。
case生成的邏輯和物理執行計畫,右側的是根據queryexecution的 tostring 方法,得到的對應結果class
person(name: string, age: long)
private def runbasicdataframeexample2(spark: sparksession): unit =
對關鍵原始碼,自己做了簡單的分析。如下圖:
其中sparksqlparser使用astbuilder生成unresolved logicalplan。
注意spark sql 從driver 提交經過詞法分析、語法分析、邏輯執行計畫、到可落地執行的物理執行計畫。其中前三部分都是 spark catalyst 子模組的功能,與最終在哪個sql執行引擎上執行並無多大關係。物理執行計畫是後續轉換為rdd的基礎和必要條件。
本文對spark sql中關鍵步驟都有一定的涉及,也可以針對queryexecution做後續的分析,建議修改sparksql 原始碼,做本地除錯。後續會進一步分析,主要結合 《sparksql 核心剖析》這本書以及自己在工作學習中遇到的各種問題,做進一步原始碼分析
spark sql 執行計畫生成案例
公尺妮中文網 乙個sql從詞法解析 語法解析 邏輯執行計畫 物理執行計畫最終轉換為可以執行的rdd,中間經歷了很多的步驟和流程。其中詞法分析和語法分析均有antlr4完成,可以進一步學習antlr4的相關知識做進一步了解。本篇文章主要對乙個簡單的sql生成的邏輯執行計畫物理執行計畫的做乙個簡單地說明...
mysql 生成執行計畫 MySQL執行計畫
和很多其他關係型資料庫不通,mysql並不會在生成查詢位元組碼來執行查詢。mysql生成查詢的一棵指令樹,然後通過儲存引擎執行完成這棵指令樹並返回結果。最終的執行計畫包含了重構查詢的全部資訊。如果某個查詢執行explain extended 之後,在執行show warnings,就可以看到重構出的...
SparkSQL 六 案例實戰
首先我們的資料來源如下 tbdate這張表記錄的是時間資訊 tbstockdetail這張表記錄的訂單的詳細資訊 tbstock這張表將訂單與實踐和地點兩個維度的資訊連線在一起。資料屬性如下 每個訂單可能包含多個貨品,每個訂單可以產生多次交易,不同的貨品有不同的單價。也就是說 tbstock與tbs...