RDD和DataFrame和DataSet三者間的區別

https://blog.csdn.net/deng624796905/article/details/80216168

https://blog.csdn.net/weixin_43087634/article/details/84398036

這兩篇文章講的很詳細,大神級別的,可以拜讀

DataFrame多了數據的結構信息,即schema。RDD是分佈式的Java對象的集合。DataFrame是分佈式的Row對象的集合。DataFrame除了提供了比RDD更豐富的算子以外,更重要的特點是提升執行效率、減少數據讀取以及執行計劃的優化

Dataframe的劣勢在於在編譯期缺少類型安全檢查,導致運行時出錯.

RDD (Spark1.0) —> Dataframe(Spark1.3) —> Dataset(Spark1.6)

1 RDD
RDD是Spark提供的最重要的抽象的概念,彈性的分佈式數據集,它是一種有容錯機制的特殊集合,可以分佈在集羣的節點上,以函數式編操作集合的方式,進行各種並行操作。Spark的RDD內置了各種函數操作,舉個例子,我們編寫wordcount案例,如果使用mapreduce進行編程,還是很複雜的,如果用RDD的話代碼量大大的減少(scala編程一句話搞定),所以相對mapreduce來說單從編程上就簡化了很多。但是同時也出現了一個問題,學習Scala、python、java語言,那麼這個使用的成本以及門檻就會很高了對於不太懂開發的人(DBA)想要使用spark是比較困難的。

DataFrame
對於DataFrame這一概念最早是出現在R和Pandas裏面的,R語言是非常適合做一些數據統計和分析的一些操作,但是它僅支持單機的處理,隨着互聯網的快速發展,單機處理的日誌、數據必然是很有限的,而且現在的日誌/數據量是越來越大,隨着spark的不斷壯大,在spark裏面就出現了DataFrame的API(1.3版本出現的)。
 

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