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

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

最佳答案

你是对的。

SPARK中间RDD( flex 分布式数据集)结果保存在内存中,因此等待时间要低得多,而作业吞吐量要高得多。 RDD具有分区,像MR这样的数据块。 SPARK还提供了迭代处理,这也是要考虑的重点。

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

但是SPARK与Scala或pyspark一起使用也容易得多。

总的来说,我不再担心MR。

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

https://stackoverflow.com/questions/56098691/

相关文章:

hadoop - 实现Hivemall回归功能的问题

docker - 尝试推送到注册表时的HTTP响应403

docker - 在受限制的互联网环境中使用docker

docker - 为Docker运行镜像没有看到结果

hadoop - 检索使用hadoop distcp复制的数据的大小

apache-spark - 如何使用作业 Spark 测量HDFS的读写时间?

docker - 在vmware中运行的docker出现x509错误

hadoop - 在Hadoop分布式文件系统(HDFS)中重新分区

dictionary - 没有为方案WASB获取文件系统。 Hdinsight Mapreduce

docker - Docker撰写:可以对依赖服务的延迟启动进行建模吗?