apache-spark - 从技术角度看RDD和Dataset/Dataframe之间的关系
问题描述
我试图从技术角度了解 RDD 和 Dataframes/Datesets 之间是否存在关系。RDD 通常被描述为 Spark 中的基本数据抽象。在我的理解中,这意味着 Dataframes/Datasets 也应该基于它。在原始Spark SQL 论文中,图 1 和图 3 指向此连接。但是,我还没有找到任何关于这种连接的文档(如果它存在的话)。
所以我的问题是:数据帧/数据集是基于 RDD 还是这两个概念是独立的?
解决方案
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 和一个模式,它将形成一个数据框。
推荐阅读
- python - 将 FMS 添加到 PacMan Pygame 项目
- java - 如何在点击事件中发送电子邮件,而用户不会注意到在后台运行
- excel - 循环遍历文件夹中的所有 Excel 文件,并使用 SAS 提取每个文件的某个单元格
- java - Sedgewick/Wayne“BellmanFordSP.java”:“findNegativeCycle”如何确保返回负循环?
- object - “Gameobject”类型的对象已被销毁
- python - 如何通过pandas groupby数量和单价计算总金额
- python - 使用 asyncio 的 python 子进程的“关闭”事件侦听器
- python - 对于数字列表,查找累积和保持在范围内的所有组合
- javascript - angularjs控制器中的window.addEventListener导致调用两次或更多次
- haskell - 为什么 Haskell 中默认不启用某些语法语言扩展?