我是新的Spark和学习有关Dataframe,操作和架构。在阅读rdd和dataframe之间的比较时,我对rdd和dataframe的数据结构感到困惑。以下是我的观察结果,如果有错误,请帮助澄清/纠正
1) 如果源数据是集群(例如:hdfs),rdd以分布式方式(块)跨集群中的节点存储在计算机ram中。
如果数据源只是一个csv文件,数据将被分发到运行服务器(如果是笔记本电脑)的ram中的多个块。我说得对吗?
2) 块和分区之间有什么关系吗?哪一个是超级集?
3) dataframe:dataframe的存储方式是否与rdd相同?如果我将源数据单独存储到Dataframe中,是否会在后台创建rdd?
提前感谢:)
1条答案
按热度按时间vybvopom1#
如果源数据是集群(例如:hdfs),rdd以分布式方式(块)跨集群中的节点存储在计算机ram中。
如果
caching
或者checkpointing
如果启用,它也可能存储在内存或磁盘上。此外,洗牌总是涉及磁盘写入。如果数据源只是一个csv文件,数据将被分发到运行服务器(如果是笔记本电脑)的ram中的多个块。我说得对吗?
csv文件将被分割成多个分区,每个任务将只读取一块数据(开始-结束偏移量)。
块和分区之间有什么关系吗?哪一个是超级集?
有点困惑,看看这个答案
split
是输入数据的逻辑划分,而block
是数据的物理划分。spark使用自己的术语和partition
在spark中的含义与hadoop中的split大致相同。当从hdfs读取一个文件时,hadooprdd正在被使用并且在引擎盖下,每个
split
将成为partition
.dataframe:dataframe的存储方式是否与rdd相同?如果我将源数据单独存储到Dataframe中,是否会在后台创建rdd?
Dataframe只不过是引擎盖下的rdd[internalrow]。
看看Spark机。