gpt4 book ai didi

scala - 为什么 spark 不断重新计算 RDD?

转载 作者:行者123 更新时间:2023-12-04 22:19:18 24 4
gpt4 key购买 nike

我使用 flatMap 制作了一个 RDD。稍后我对其进行范围分区。如果我坚持原来的 RDD,一切正常。但是,如果我不缓存它,范围分区器部分会以某种方式重新计算原始 RDD 的部分。我知道如果我没有足够的内存,但在这种情况下,我的系统中的内存比 RDD 占用的内存多得多。其次,该 RDD 的计算时间很长,因此这种重新启动/重新计算确实会损害性能。这种奇怪行为的原因是什么?

P.S 我只使用 RDD 一次。所以,这不应该发生。

最佳答案

这就是 Spark 的工作原理:

When you persist an RDD, each node stores any partitions of it that it computes in memory and reuses them in other actions on that dataset (or datasets derived from it).



所以当你不这样做时,它不会。如果你多次使用一个 RDD,并且有足够的内存,你通常想要持久化它。

这不能自动完成,因为 Spark 无法知道您是否要重用 RDD:例如您可以计算一个RDD,然后对其进行 sample,并根据结果决定是否要对RDD做其他事情,因此RDD是否使用两次取决于随机数生成器。

关于scala - 为什么 spark 不断重新计算 RDD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40248865/

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