gpt4 book ai didi

hadoop - Spark RDD - 分区总是在 RAM 中吗?

转载 作者:可可西里 更新时间:2023-11-01 14:09:45 25 4
gpt4 key购买 nike

我们都知道 Spark 在内存中进行计算。我只是对以下内容感到好奇。

  1. 如果我从 HDFS 在我的 pySpark shell 中创建 10 个 RDD,这是否意味着所有这 10 个 RDD 的数据都将驻留在 Spark Workers 内存中?

  2. 如果不删除RDD,它会永远存在内存中吗?

  3. 如果我的数据集(文件)大小超过可用 RAM 大小,数据将存储在哪里?

最佳答案

If I create 10 RDD in my pySpark shell from HDFS, does it mean all these 10 RDD data will reside on Spark Memory?

是的,所有 10 个 RDD 数据都将散布在 spark worker 机器的 RAM 中。但不一定所有机器都必须有每个RDD的分区。当然,RDD 仅在延迟评估时对其执行任何操作时才会将数据存储在内存中。

If I do not delete RDD, will it be in memory forever?

如果 RDD 或 Dataframe 不再使用,Spark 会自动取消持久化。为了知道 RDD 或 Dataframe 是否被缓存,您可以进入 Spark UI --> Storage table 并查看 Memory 详细信息。您可以使用 df.unpersist()sqlContext.uncacheTable("sparktable") 从内存中删除 df 或表。 link to read more

If my dataset size exceeds available RAM size, where will data to stored?

如果 RDD 不适合内存,一些分区将不会被缓存,并且每次需要时都会重新计算。 link to read more

If we are saying RDD is already in RAM, meaning it is in memory, what is the need to persist()? --As per comment

要回答您的问题,当在 RDD 上触发任何操作并且该操作找不到内存时,它可以删除未缓存/未持久化的 RDD。

一般来说,我们持久化需要大量计算或/和混洗的 RDD(默认情况下 spark 持久化混洗 RDD 以避免昂贵的网络 I/O),所以当对持久化 RDD 执行任何操作时,它只会执行该操作,而不是根据沿袭图从头开始重新计算,check RDD persistence levels here .

关于hadoop - Spark RDD - 分区总是在 RAM 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40732962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com