【发布时间】:2018-10-04 16:13:40
【问题描述】:
我了解localCheckpoint 删除了重建 RDD 所需的历史记录。 cache 正在保存 RDD 的当前状态,因此它不需要重建它。
但是,我在几个方面感到困惑。如果我这样做 localCheckpoint ,并且稍后在我的代码中需要这个 RDD,我经常会得到一个 Exception 关于如何不再找到分区的信息。
我查看了 sparkUI 中的 Storage 选项卡,它说只有一小部分 RDD 被保存,比如 17%。
所以我阅读了更多内容并意识到 spark 会丢弃旧的 RDD。有没有办法让 Spark 永远保留它?
另外,如果我使用cache 而不是localCheckpoint,问题会解决吗?但这只是需要时间,因为 Spark 必须重新计算分区?
总的来说,我只是想在内存中保留一个 RDD,以便在我的大部分工作中能够在最后将它合并回来,但是当我到达那里时,Spark 已经将它删除了。我该如何解决?
localCheckpoint.cache 或 cache.localCheckpoint 有什么作用吗?或者一个或另一个就足够了?
【问题讨论】:
标签: scala apache-spark hadoop