Spark的介绍中说
RDD 可以在查询之间存储在内存中,无需复制 http://spark.apache.org/research.html.
据我所知,您必须使用手动缓存 RDD.cache()
or .persist()
.如果我不采取任何措施,如下所示
val file = sc.textFile("hdfs://data/kv1.txt")
file.flatMap(line => line.split(" "))
file.count()
我不将RDD“文件”持久化在缓存或磁盘中,在这种情况下,Spark可以运行得更快吗
比MapReduce?
Spark 将逐个分区地计算计算的每个阶段。它将暂时在内存中保存一些数据以完成其工作。它可能必须将数据溢出到磁盘并通过网络传输才能执行某些阶段。但这些都不是(必然)持久的。如果你count()
一切又要从头开始。
这并不是 Spark 比 MapReduce 运行得更快的情况;而是 Spark 运行速度比 MapReduce 快。可能会是slower对于这样一个简单的操作。事实上,加载到内存中并没有什么好处。
更复杂的示例,例如重要的管道或对 RDD 的重复访问,将显示出持久化在内存甚至磁盘上的好处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)