我在Spark中有一个RDD,我已经缓存了。在我缓存它之前,我重新分配它。这工作,我可以在spark的存储选项卡中看到它具有预期的分区数。
这是后续运行阶段的样子:
它正在跳过我对缓存的RDD所做的一系列工作,这很棒。我想知道的是,为什么第18阶段以重新分配开始。你可以看到它是在第17阶段结束时完成的。
我在代码中的步骤是:
List<Tuple2<String, Integer>> rawCounts = rdd
.flatMap(...)
.mapToPair(...)
.reduceByKey(...)
.collect();
要获取RDD,我将其从会话上下文中删除。我也必须包装它,因为我使用的是Java:
JavaRDD<...> javaRdd = sc.emptyRDD();
return javaRdd.wrapRDD((RDD<...>)rdd);
我不认为这是重新分配的具体内容。我已经删除了重新分区,现在我看到了在跳过阶段之后出现的其他一些操作。 E.g。
绿点和之前的所有内容都应该已经制定出来并进行缓存。