Spark 2.0中的概念差异RDD到Dataset?

时间:2016-09-29 13:51:52

标签: scala apache-spark-2.0

我读了

在Spark 1.6中,数据集似乎更像是一个改进的DataFrame("Conceptually Spark DataSet is just a DataFrame with additional type safety")。在Spark 2.0中,它看起来更像是improved RDD。前者有一个关系模型,后者更像是一个列表。对于Spark 1.6,据说Datasets是DataFrames的扩展,而在Spark 2.0中DataFrames只是包含Type [Row]的数据集,使得DataFrames成为Datasets的一个特例,使DataFrame成为Datasets的特例。现在我有点困惑。 Spark 2.0中的数据集在概念上更像是RDD还是像DataFrames? Spark 2.0中RDD与数据集之间的概念区别是什么?

1 个答案:

答案 0 :(得分:0)

我很瘦,从用户的角度看它们非常相似,但是在引擎盖下实现的方式却截然不同。数据集API现在看起来几乎和RDD API一样灵活,但增加了整个优化的故事(Catalyst& Tungsten)

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

  

RDD可以与任何Java或Scala类一起使用并运行   直接用所有相关成本操纵这些对象   对象创建,序列化和垃圾收集。

     

数据集仅限于实现Scala产品的类   特征,例如案例类。这是有充分理由的   局限性。数据集通常以优化的二进制格式存储数据   在堆外内存中,以避免反序列化和垃圾的成本   采集。即使你觉得你正在编写常规编码   对象,Spark实际上正在生成自己的优化字节码   直接访问数据。