count()会导致map()代码在Spark中执行吗?

时间:2016-02-25 20:30:19

标签: apache-spark pyspark

所以,我知道Spark是一个懒惰的执行者。 例如,如果我打电话

post = pre.filter(lambda x: some_condition(x)).map(lambda x: do_something(x))

我知道它不会立即执行。

但是当我调用post.count()时,上面的代码会发生什么?我想过滤会被强制执行,因为prepost可能没有相同的行数,因为那里有filter条件。但是,map是一对一关系,因此计数不会受其影响。在给定map

的情况下,count()命令会在这里执行吗?

跟进:当我想强制执行map语句时(假设count()不起作用),我可以调用什么强制执行?我宁愿不必使用saveAsTextFile()

1 个答案:

答案 0 :(得分:5)

count将执行沿袭的所有转换,除非可以从缓存中获取某些阶段。这意味着每次转换都将至少执行一次,因为您不依赖于由some_conditiondo_something触发的某种副作用,它应该可以正常工作。