spark SQL和presto比較


      Presto比Spark SQL更快或更慢,取決於您正在執行的查詢類型,環境和引擎調整參數。

相同點 不同點

presto和spark sql都是MPP(massively parallel processing)架構(Presto/Impala/SparkSQL/Drill等),

有很好的數據量和靈活性支持,都是基於內存(spark基於內存和磁盤),

但是對響應時間是沒有保證的。當數據量和計算復雜度增加后,

響應時間會變慢,從秒級到分鍾級,甚至小時級都有可能。

    重點不同:presto強調查詢,spark sql強調計算
    架構不同:Presto架構相當簡單,有一個協調器,可以執行SQL解析、計划、調度,和一組執行物理計划的工作節點;Spark核心之間有更多層,框架更復雜,RDD的彈性構建,為作業進行資源管理和協商等等
    內存存儲:兩者都是內存計算,當內存不夠時,presto直接OOM,spark會落地磁盤
    資源申請:presto預先申請好CPU和內存,coordinator和worker一直運行;spark任務實時申請資源,需要多少資源申請多少
    數據處理:Presto是批處理(頁面)管道處理模式,只要頁面完成,就可以將其發送到下一個任務(這種方法大大減少了各種查詢的端到端響應時間); 在spark中,數據需要在進入下一階段之前完全處理。
    數據容錯: 如果單個節點發生失敗或者數據丟失,presto會導致查詢失敗;但spark會根據rdd血緣關系重新計算
    優化程序:Presto基於成本的優化器(CBO),速度更快;Spark SQL基於規則的優化(RBO),可在復雜查詢上執行更好的操作,速度更慢。但在Spark 2.2開始后的版本,也引入了基於成本的優化(CBO),而且CBO只是對特定場景會有影響,這點差異可以忽略。

 


免責聲明!

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



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