我正在开发一个Spark应用程序,我需要在每次迭代中循环缓存RDD。在我完成每个RDD之后,我尝试unpersist
它。但经过几次迭代后,我不断出现内存异常。如果在执行unpersist之后立即调用GC,一切都应该没问题,我不应该从内存异常(由于我的RDD的大小)。但是,我不确定在工作节点上调用GC的频率。有人可以为我详细说明吗?
答案 0 :(得分:0)
不确定这与您的情况有关,但请注意,如果您有多次迭代,您的rdds的依赖关系图将会增长。如果是这种情况,请考虑使用checkpoints来切割谱系图并保存rdd(可能最好在每第n次迭代时执行)。