首页 > 解决方案 > Spark vs Hadoop 这个简单的例子?

问题描述

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-sparkhadoopmapreduce

解决方案


是的你是对的。

SPARK 中间 RDD(弹性分布式数据集)结果保存在内存中,因此延迟更低,作业吞吐量更高。RDD 有分区,像 MR 这样的数据块。SPARK 还提供迭代处理,这也是需要考虑的关键点。

MR 当然有一个组合器来减轻一点痛苦。

但使用 Scala 或 pyspark,SPARK 也更容易使用。

我不会再担心 MR - 一般来说。

这是关于 SPARK BTW 的精彩读物:https ://medium.com/@goyalsaurabh66/spark-basics-rdds-stages-tasks-and-dag-8da0f52f0454


推荐阅读