Spark vs Hadoop 这个简单的例子?

Spark vs Hadoop with this simple example?

在 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 慢?我们没有办法将它们保存在内存中吗?分区结果也是如此?

是的,你是对的。

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

MR 确实有一个组合器,当然可以减轻一点痛苦。

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

我不会再担心 MR - 总的来说。

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