我们已经知道Spark是如何设计和实现数据处理流程的,这里我们 再深入思考一下,为什么Spark能够替代MapReduce成为主流的大数据处理框架呢?对比MapReduce,Spark究竟有哪些优势?
一 优势
1 通用性:
基于函数式编程思想,MapReduce将数据类型抽象为,k,v格式,并将数据处理操作抽象为map()和 reduce()两个算子,这两个算子可以表达一大部分数据处理任务。因 此,MapReduce为这两个算子设计了固定的处理流程map—Shuffle—reduce。
但到数据处理流程其实多种多样,map—Shuffle—reduce模式只适用于表达类似foldByKey()、 reduceByKey()、aggregateByKey()的处理流程,而像cogroup()、join()、cartesian()、coalesce()的流程需要更灵活的表达方式。
Spark在两方面进行 了优化改进:
1)将输入/输出、中间数据抽象表达为一个数据结构RDD,相当于在Java中定义了class,然后可以根据不同类型的中间数据,生成不同的RD