0

我读

在 Spark 1.6 中,Dataset 似乎更像是一个改进的 DataFrame(“概念上 Spark DataSet 只是一个具有额外类型安全性的 DataFrame”)。在 Spark 2.0 中,它看起来更像是改进的 RDD。前者有一个关系模型,后者更像一个列表。对于 Spark 1.6,据说 Datasets 是 DataFrames 的扩展,而在 Spark 2.0 中,DataFrames 只是包含 Type[Row]的 Datasets,使 DataFrames 成为 Datasets 的特例,使 DataFrames 成为 Datasets 的特例。现在我有点困惑。Spark 2.0 中的数据集在概念上更像 RDD 还是 DataFrame?Spark 2.0 中 RDD 与数据集之间的概念区别是什么?

4

1 回答 1

0

我认为从用户的角度来看它们非常相似,但在底层实现却截然不同。Dataset API 现在看起来几乎和 RDD API 一样灵活,但增加了优化的全部内容(Catalyst & Tungsten)

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

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

数据集仅限于实现 Scala Product trait 的类,例如案例类。这种限制有一个很好的理由。数据集以优化的二进制格式存储数据,通常在堆外内存中,以避免反序列化和垃圾收集的成本。尽管感觉就像是在针对常规对象进行编码,但 Spark 确实在生成自己的优化字节码以直接访问数据。

于 2016-10-24T18:31:05.600 回答