在谷歌上,Spark和Hadoop MapReduce之间的关键区别都体现在处理方法上: Spark可以在内存中完成,而Hadoop MapReduce必须从磁盘读取和写入。看起来我明白了,但我想用一个例子来确认一下。
考虑下面的字数统计示例:
val text = sc.textFile("mytextfile.txt")
val counts = text.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
counts.collect
我的理解是:
在Spark的情况下,一旦行被“”分割,输出将存储在内存中。与函数map和reduce类似。我相信当处理跨分区发生时也是如此。
在MapReduce的情况下,每个中间结果(像split/map/reduce之后的单词)是否会保存在磁盘上,即HDFS,这使得它比Spark更慢?我们没有办法把它们保存在内存中吗?分区结果也是这样吗?
https://stackoverflow.com/questions/56098691
复制相似问题