在閱讀了一些關於Whole State Code Generation
的文章之後,spark會執行字節碼優化以將查詢計劃轉換爲優化的執行計劃。現在Spark如何將字節碼轉換爲機器碼指令的運行時間轉換?
https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-sql-whole-stage-codegen.html
我的下一個問題是,但仍然在做這些優化相關的字節碼和所有以後,它仍然可能是合理的,因爲這樣做的這些字節碼指令的機器代碼指令的轉換可能是一個可能的瓶頸由JIT單獨在流程運行期間進行,並且爲了進行此優化,JIT必須有足夠的運行。
因此,spark是否會執行與優化字節碼(這是whole stage code gen
的結果)到機器碼的動態/運行時轉換有關的任何內容,或者是否依賴於JIT將這些字節碼指令轉換爲機器碼指令。因爲如果它依賴於JIT,那麼涉及到一定的不確定性。
另外一兩件事,我有些興趣在知道是,如果火花不做這種優化,那麼在某些情況下,與不進行字節碼優化的常規查詢引擎相比,它可能會變慢。原因是他們一次又一次地使用相同的代碼段,最終得到JIT優化(在熱路徑中),而SPARK可能永遠不會這樣做,因爲我們爲每種類型的查詢生成不同或優化的字節代碼。 –
由於我是鏈接文章的作者,因此我對_「閱讀了關於整個州代碼生成的一些文章」感興趣_?我想閱讀他們更好地探索這個領域。 –
沒有問題,但我的觀點再次表明,如果spark沒有執行機器代碼指令生成,那麼JIT實際上可能不會實際啓動,這可能會使其在某些情況下變慢。那有意義嗎 ? –