【发布时间】:2018-10-29 06:47:32
【问题描述】:
我找到了类似的话题:Understanding Spark's caching
但这仍然不是我的问题。让我们考虑下面的sn-ps代码: 选项A:
rdd1 = sc.textFile()
rdd1.cache()
rdd2 = rdd1.map().partionBy()
rdd3 = rdd1.reduceBy().map()
rdd2.cache()
rdd1.unpersist()
data = rdd2.collect()
选项B:
rdd1 = sc.textFile()
rdd1.cache()
rdd2 = rdd1.map().partionBy()
rdd3 = rdd1.reduceBy().map()
rdd2.cache()
data = rdd2.collect()
rdd1.unpersist()
我应该选择哪个选项来防止重新计算rdd1?乍一看,optionA 看起来不错,但考虑到 spark 中的操作是懒惰的,我认为在对 rdd2 执行操作之前执行 unpersist 可能会导致需要再次重新计算 rdd1。另一方面,调用unpersist,如在选项B 中可能导致没有可用空间来缓存rdd2。请帮我选择我应该使用哪个选项。
【问题讨论】:
标签: python apache-spark hadoop pyspark bigdata