Spark SQL概念學習系列之DataFrame與RDD的區別


 

  不多說,直接上干貨!

 

 

  DataFrame的推出,讓Spark具備了處理大規模結構化數據的能力,不僅比原有的RDD轉化方式更加簡單易用,而且獲得了更高的計算性能。Spark能夠輕松實現從MySQL到DataFrame的轉化,並且支持SQL查詢。

          

                      圖   DataFrame與RDD的區別

 

  從上面的圖中可以看出DataFrame和RDD的區別。

  RDD是分布式的 Java對象的集合,比如,RDD[Person]是以Person為類型參數,但是,Person類的內部結構對於RDD而言卻是不可知的。

  DataFrame是一種以RDD為基礎的分布式數據集,也就是分布式的Row對象的集合(每個Row對象代表一行記錄),提供了詳細的結構信息,也就是我們經常說的模式(schema),Spark SQL可以清楚地知道該數據集中包含哪些列、每列的名稱和類型。
  和RDD一樣,DataFrame的各種變換操作也采用惰性機制,只是記錄了各種轉換的邏輯轉換路線圖(是一個DAG圖),不會發生真正的計算,這個DAG圖相當於一個邏輯查詢計划,最終,會被翻譯成物理查詢計划,生成RDD DAG,按照之前介紹的RDD DAG的執行方式去完成最終的計算得到結果。

 


免責聲明!

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



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