【问题标题】:Conceptual difference RDD to Dataset in Spark 2.0?Spark 2.0中RDD与数据集的概念差异?
【发布时间】:2017-02-07 21:26:21
【问题描述】:

我读过

在 Spark 1.6 中,Dataset 似乎更像是改进的 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] 的 Datasets,使 DataFrames 成为 Datasets 的特例,使 DataFrames 成为 Datasets 的特例。现在我有点困惑。 Spark 2.0 中的数据集在概念上更像 RDD 还是 DataFrame? RDD 与 Spark 2.0 中的数据集之间的概念有什么区别?

【问题讨论】:

    标签: scala apache-spark-2.0


    【解决方案1】:

    我认为从用户的角度来看,它们非常相似,但在底层实现上却截然不同。 Dataset API 现在看起来几乎和 RDD API 一样灵活,但增加了优化的整个故事(催化剂和钨)

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 2010-12-01
      • 2015-12-27
      相关资源
      最近更新 更多