spark会自动缓存一些结果吗?

时间:2015-07-02 09:22:28

标签: caching apache-spark

我执行了两次动作,第二次只需要很少的时间来运行,所以我怀疑spark会自动缓存一些结果。但我找到了任何消息来源。

我正在使用Spark1.4。

doc = sc.textFile('...')
doc_wc = doc.flatMap(lambda x: re.split('\W', x))\
            .filter(lambda x: x != '') \
            .map(lambda word: (word, 1)) \
            .reduceByKey(lambda x,y: x+y) 
%%time
doc_wc.take(5) # first time
# CPU times: user 10.7 ms, sys: 425 µs, total: 11.1 ms
# Wall time: 4.39 s

%%time
doc_wc.take(5) # second time
# CPU times: user 6.13 ms, sys: 276 µs, total: 6.41 ms
# Wall time: 151 ms

1 个答案:

答案 0 :(得分:6)

来自the documentation

  

Spark也会在shuffle操作中自动保留一些中间数据(例如reduceByKey),即使没有用户调用persist也是如此。这样做是为了避免在shuffle期间节点发生故障时重新计算整个输入。我们仍然建议用户在生成的RDD上调用持久化,如果他们打算重复使用它。

底层文件系统也将缓存对磁盘的访问。