cache与localcheckpoint的比较以及如何阻止spark删除它?

kfgdxczn  于 2021-06-01  发布在  Hadoop
关注(0)|答案(2)|浏览(569)

我明白 localCheckpoint 删除重建rdd所需的历史记录。以及 cache 正在保存rdd的当前状态,因此不需要重建它。
然而,我在几个方面感到困惑。如果我这样做了 localCheckpoint ,我需要这个rdd在以后的代码中,我经常得到一个 Exception 关于如何再也找不到分区。
我看了看 Storage 它说只有一小部分rdd被保存了下来,比如17%。
所以我读了更多的书,意识到spark会抛弃旧的RDD。spark有没有办法永远保持它?
另外,如果我在做 cache 而不是 localCheckpoint ,问题解决了吗?但这需要时间,因为spark需要重新计算分区?
总的来说,我只想在内存中保留一个rdd,以便在工作的很大一部分能够在最后将它合并回来,但当我到达那里时,spark已经删除了它。我该怎么解决这个问题?
做什么 localCheckpoint.cache 或者 cache.localCheckpoint 有什么事吗?或者一个就够了?

jq6vz3qz

jq6vz3qz1#

spark.dynamicAllocation.cachedExecutorIdleTimeout 如果你想保持 RDD 在你工作的很长一段时间里。

xtfmy6hx

xtfmy6hx2#

你需要使用 localCheckpointcheckpoint ? 当使用 localCheckpoint 你的截短w/o复制,这是更快,但更不可靠,这可能是你的麻烦。
保存位置的一般差异: cache 正在保存到内存(如果对于内存到磁盘来说是大的), checkpoint 正在直接保存到磁盘。 cache 以及 persist 如果内存已满(如果您自己或其他人在同一群集上工作),则会被覆盖;如果群集已终止或重新启动,则会被清除。 checkpoint 将保留到hdfs或本地存储,并且仅在手动完成时才会被删除。每个都有不同的目的。
更多细节(强烈建议阅读):
https://github.com/jerrylead/sparkinternals/blob/master/markdown/english/6-cacheandcheckpoint.md
执行localcheckpoint.cache或cache.localcheckpoint有什么作用吗?或者一个就够了? cache 在你之前 checkpoint . checkpoint 在它自己的作业上运行,因此如果缓存rdd,它将从缓存中提取而不是重新运行它。

相关问题