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

yal*_* du 2 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
Run Code Online (Sandbox Code Playgroud)

dpe*_*ock 6

文档:

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

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