当我运行我的火花应用程序时。产生了几个工作。每个工作都有几个阶段。
我正在试验持久的RDD。我将RDD保存到磁盘。但我无法判断它是否在整个工作中被重复使用。
当我查看DAG时,我确实看到green dot
表示rdd持续存在。但我也在dag中看到了之前的地图/过滤器等。
例如在Job-0 Dag中我看到:
RandomRDD [0] -> MapParitionRDD [1] -> MapParitionRDD [2] (green) -> Filter [3]...
然后对于Job-1 Dag,我也看到了:
RandomRDD [0] -> MapParitionRDD [1] -> MapParitionRDD [2] (green) -> Filter [3]...
如何判断rdd [0],rdd [1]& rdd [2]是重新计算还是简单脱水?
一般来说,通过查看工作历史,您如何判断rdd是否被重新计算或仅仅是脱水?
答案 0 :(得分:0)
生成持久化RDD的上游(例如0& 1)和持久化的(2)RDD所需的计算将不会完成。为了测试它,在持久化之前对RDD2进行一些简单的计算,并在持久化之后注意它的时间差异。
Spark Persistence Documentation
Spark中最重要的功能之一是跨操作在内存中持久化(或缓存)数据集。当您持久保存RDD时,每个节点都会存储它在内存中计算的任何分区,并在该数据集(或从中派生的数据集)的其他操作中重用它们。这使得未来的行动更快(通常超过10倍)。缓存是迭代算法和快速交互使用的关键工具。