spark和hadoop用这个简单的例子?

mzsu5hc0  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(407)

在google上,spark和hadoopmapreduce的关键区别在于处理方法:spark可以在内存中完成,而hadoopmapreduce必须从磁盘读写。看起来我明白了,但我想用一个例子来证实。
考虑以下字数计算示例:

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慢?我们不可能把它们留在记忆里吗?分区结果也是如此?

ifmq2ha2

ifmq2ha21#

是的,你说得对。
spark intermediate rdd(弹性分布式数据集)结果保存在内存中,因此延迟要低得多,作业吞吐量也要高。RDDS有分区,像Skar这样的数据块也提供迭代处理,也是一个要考虑的关键点。
先生确实有一个组合器,当然可以减轻一点痛苦。
但是spark也更容易使用,比如scala或pyspark。
总的来说,我不会再担心先生了。
以下是关于spark的精彩读物:https://medium.com/@goyalsaurabh66/spark-基础知识-rdds-stages-tasks-and-dag-8da0f52f0454

相关问题