我读了
在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与数据集之间的概念区别是什么?
答案 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实际上正在生成自己的优化字节码 直接访问数据。