如果一个分区丢失了,我们可以使用沿袭来重建它。基本RDD是否会再次加载?

zic*_*lin 5 apache-spark rdd

我读了论文“弹性分布式数据集,用于内存中群集计算的容错抽象”。作者说,如果丢失了一个分区,我们可以使用血统对其进行重建。但是,原始RDD现在不存在于内存中。那么是否会再次加载基本RDD以重建丢失的RDD分区?

Mat*_*zyk 4

是的,正如您所提到的,如果用于创建分区的 RDD 不再位于内存中,则必须从磁盘再次加载并重新计算。如果用于创建当前分区的原始 RDD 也不存在(无论是在内存中还是在磁盘上),那么 Spark 将不得不再次后退一步并重新计算前一个 RDD。在最坏的情况下,Spark 将不得不一直返回到原始数据。

如果您有像上面描述的那样的长谱系链,作为最坏的情况,可能意味着很长的重新计算时间,那么您应该考虑使用检查点,将中间结果存储在可靠的存储(如 HDFS)中,这将阻止 Spark 继续运行一直回到原始数据源并使用检查点数据。

@Comment:我在查找任何官方参考资料时遇到问题,但根据我从他们的代码库中记得的信息,Spark 只重新创建了丢失的数据部分。