RDD、DataFrame、DataSet的聯繫和轉化

在SparkSQL中Spark爲我們提供了兩個新的抽象,分別是DataFrame和DataSet。他們和RDD有什麼區別呢?首先從版本的產生上來看:
RDD (Spark1.0) —> Dataframe(Spark1.3) —> Dataset(Spark1.6)
如果同樣的數據都給到這三個數據結構,他們分別計算之後,都會給出相同的結果。不同是的他們的執行效率和執行方式。在後期的Spark版本中,DataSet有可能會逐步取代RDD和DataFrame成爲唯一的API接口。

三者的共性

(1)RDD、DataFrame、Dataset全都是spark平臺下的分佈式彈性數據集,爲處理超大型數據提供便利;
(2)三者都有惰性機制,在進行創建、轉換,如map方法時,不會立即執行,只有在遇到Action如foreach時,三者纔會開始遍歷運算;
(3)三者有許多共同的函數,如filter,排序等;
(4)在對DataFrame和Dataset進行操作許多操作都需要這個包:import spark.implicits._(隱式轉換)(在創建好SparkSession對象後儘量直接導入)

三者的互相轉換

在這裏插入圖片描述

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