为何选择spark!
随着大数据处理的应用场景越来越多,人们对Hadoop的要求也越来越高,开发出的对应的系统也越来越多,人们迫切的需要一个综合的计算框架,Spark应运而生,我们可以看看Spark可以干些什么。 那么为什么Spark能做到这些? 首先,我们需要理解Spark中的三大概念: RDD(Resilient Distributed Dataset) 。实际上对与开发人员而已它是以一种对象的形式作为数据的一种表现形式而存在,可以理解为一种你可以操作的只读的分布式数据集,之所以称之为有弹性,在于: RDD可以在内存和磁盘存储间手动或自动切换; RDD拥有Lineage(血统)信息,及存储着它的父RDD以及父子之间的关系,当数据丢失时,可通过Lineage关系重新计算并恢复结果集,使其具备高容错性; 当血统链太长时,用户可以建立checkpoint将数据存放到磁盘上持久化存储加快容错速度(建议通过saveAsTextFile等方式存储到文件系统),而persist方式可以将数据存储到内存中用于后续计算的复用; RDD的数据重新分片可以手动设置。在Spark中执行重新分片操作的方法有repartition和coalesce两个方法,这两个方法都是手动设置RDD的分区数量,repartition只是coalesce接口中参数shuffle=true的实现;是否重新分区对性能影响比较大