Spark具有运行速度快、易用性好、通用性。Spark 是在借鉴了 MapReduce 思想之上发展而来的,继承了其分布式并行计算的优点并改进了 MapReduce 明显的缺陷,具体优势分析如下:
- Spark 把中间数据放到内存中,迭代运算效率高。MapReduce 中计算结果需要落地,保存到磁盘上,这样势必会影响整体速度,而 Spark 支持 DAG 图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。
- Spark 容错性高。Spark 引进了弹性分布式数据集 RDD (Resilient Distributed Dataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统“对它们进行重建。另外在 RDD 计算时可以通过 CheckPoint 来实现容错。
- Spark 具备通用性。在Hadoop 提供了 Map 和 Reduce 两种操作基础上,Spark 又提供的很多数据集操作类型有,大致分为:Transformations 和 Actions 两大类。Transformations 包括 Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、oin、Cogroup、MapValues、Sort 和 PartionBy 等多种操作类型,同时还提供 Count, Actions 包括 Collect、 Reduce、Lookup 和 Save 等操作。
- 强大的SparkMLlib机器学习库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。