是的,正如您所提到的,如果用于创建分区的RDD不再在内存中,则必须再次从磁盘加载并重新计算。如果用于创建当前分区的原始RDD也不存在(无论是在内存中还是在磁盘上),那么Spark将不得不再次退回并重新计算之前的RDD。在最糟糕的情况下,Spark必须一直回到原始数据。
如果你有像上面描述的那样长的血统链 最坏的情况 这可能意味着很长的重新计算时间,那就是你应该考虑使用的时间 检查点 它将中间结果存储在可靠的存储(如HDFS)中,这会阻止Spark一直返回到原始数据源并使用检查点数据。
@Comment:我在查找任何官方参考资料方面遇到了问题,但是从我们记忆中的代码库中,Spark只会重新创建丢失的数据部分。