首页 > 解决方案 > 从技术角度看RDD和Dataset/Dataframe之间的关系

问题描述

我试图从技术角度了解 RDD 和 Dataframes/Datesets 之间是否存在关系。RDD 通常被描述为 Spark 中的基本数据抽象。在我的理解中,这意味着 Dataframes/Datasets 也应该基于它。在原始Spark SQL 论文中,图 1 和图 3 指向此连接。但是,我还没有找到任何关于这种连接的文档(如果它存在的话)。

所以我的问题是:数据帧/数据集是基于 RDD 还是这两个概念是独立的?

标签: apache-spark

解决方案


Dataframe 和 Datasets 基于 Rdd,但是这有点隐藏。事实上,Dataframe 和 Datasets 更多地用于 spark-sql 项目,而 Rdd 在 spark-core 上。

以下是关于 Dataframe,即 Dataset[Row] 和 Rdd 如何链接的技术观点: Dataframe 有一个QueryExecution 控制所有 sql 执行行为的方法。现在,当引擎执行此操作时,它将在 Row 类型的内部 rdd 中输出, lazy val toRdd: RDD[InternalRow] = executedPlan.execute(). 有了那个 rdd 和一个模式,它将形成一个数据框。


推荐阅读