2016-09-29 126 views
-1

我讀Spark 2.0中數據集的概念差異RDD?

在火花1.6數據集似乎更喜歡的改進的數據幀("Conceptually Spark DataSet is just a DataFrame with additional type safety")。在Spark 2.0中,它更像是一個improved RDD。前者具有關係模型,後者更像是一個列表。對於Spark 1.6,據說數據集是DataFrame的擴展,而在Spark 2.0中,DataFrame只是包含類型[Row]的數據集,使DataFrame成爲數據集的特例,使DataFrame成爲數據集的特例。現在我有點困惑。 Spark 2.0中的數據集在概念上更像是RDD還是DataFrame? 什麼是概念在Spark 2.0中RDD與數據集的區別?

回答

0

我很瘦,它們從用戶角度來看非常相似,但在引擎蓋下卻完全不同。數據集API現在看來幾乎RDD API那樣靈活,但增加了優化的整個故事(催化劑&鎢)

http://www.agildata.com/apache-spark-2-0-api-improvements-rdd-dataframe-dataset-sql/援引

RDDS可以與任何Java或Scala的類中使用,並通過 操作以對象創建,序列化和垃圾收集的所有相關成本 直接操縱這些對象。

數據集僅限於實現Scala Product 特性的類,例如案例類。這種限制有一個很好的理由。數據集以優化的二進制格式存儲數據,通常在堆外存儲器中使用 ,以避免反序列化和垃圾回收的成本。即使感覺你正在編寫對象的正常編碼,Spark也確實爲 直接訪問數據生成了自己的優化字節碼。