【大數據學習】SparkSQL 之 DataFrame與RDD的區別

DataFrame與RDD的區別

看上圖,左側的RDD[Person]雖然以Person爲類型參數,但Spark框架本身不瞭解Person類的內部結構,而右側的DataFrame就不一樣了,它更像是一個二維表格,在這個二維表格裏面,有行有列。使得Spark SQL可以清楚地知道該數據集中包含哪些列,每列的名稱和類型各是什麼。DataFrame多了數據的結構信息,即不僅可以知道里面的數據,而且它還可以知道里面的schema信息。相當於結構化的了,而平常我們所說的優化,如果想要優化的更好,所要暴露的信息更多就越好,這樣系統才能更好大的進行優化 。以上是從存儲的角度分析兩者的區別。

現在再結合上圖進行理解:

Java 、Scala操作RDD的底層是跑在JVM上的,而Python是跑在python execution,由於環境不一樣,從而他們執行時的效率不一樣的。但是有DF就不一樣的,經過DF後,再經過一層邏輯執行計劃,等於將Java ,Scala,Python 等全部都轉換成邏輯執行計劃Logicplan,完了後纔到物理執行計劃Physical Execution。所以不管是什麼語言,執行的效率幾乎是一樣的。這個就是從計算(執行)的角度去分析兩者的區別。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章