【发布时间】:2019-09-29 14:35:32
【问题描述】:
在 google 上的任何地方,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 慢?有没有办法让我们记住它们?分区结果也是这样吗?
【问题讨论】:
标签: apache-spark hadoop mapreduce