这个简单的示例可以展示Spark与Hadoop?

时间:2019-05-12 11:17:45

标签: apache-spark hadoop mapreduce

在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,一旦行被“”分隔,输出将存储在内存中。与功能映射和减少类似。我相信在跨分区进行处理时也是如此。

对于MapReduce,是否会将每个中间结果(如split / map / reduce之后的单词)保留在磁盘上,即HDFS,这使其比Spark慢一些?我们无法将它们保存在内存中吗?分区结果也一样吗?

1 个答案:

答案 0 :(得分:0)

是的,你是对的。

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

MR确实有一个合并器,可以稍微减轻疼痛。

但是,借助Scala或pyspark,SPARK的使用也容易得多。

我不再担心MR了。

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