2015-10-16 61 views

回答

2

我相信这是因为你可以在多个地点同一个分区的缓存。有关更多详细信息,请参见SPARK-4049

编辑:

如果也许你已经设置speculative execution(见spark.speculation)我不知道?如果你的任务很复杂,他们会重新启动,我相信它会复制一个分区。此外,另一个有用的事情可能是致电rdd.toDebugString,它将提供关于RDD的大量信息,包括转换历史记录和缓存分区的数量。

+0

我没有在任何RDD上调用两次。其他什么操作可能导致这种情况?有没有一种方法可以找出哪个RDD被缓存两次?谢谢! – Edamame

+0

查看您的UI,缓存两次的RDD具有500个分区(RDD 19)和50个分区(RDD 30)。您可以在每个RDD上以编程方式调用'rdd.partitions.size'(或pyspark中的'rdd.getNumPartitions()')来确定哪个RDD超过了100%。 –