1、什么是弹性分布式数据集?
Spark提出了RDD(Resilient Distributed Datasets)这么一个全新的概念,RDD弹性分布式数据集是并行、容错的分布式数据结构;可以将RDD视作数据库中的一张表。其中可以保存任何类型的数据。
RDD可以持久化到硬盘或内存当中。
RDD是一个分区(Partition)的数据集,Spark将数据存储在不同节点上的分区(Block)上。分区的多少决定了并行计算的粒度;
Spark提供了一系列操作用于操作RDD中的数据。
RDD还具有容错性,可以帮助重新安排计算并优化数据处理过程。
2、RDD的【Transformation】操作-变换
变换:调用一个变换方法,不会有任何求值计算,它只获取一个RDD作为参数,然后返回一个新的RDD,新的RDD也可以进行另外的转换。这个过程是分布式的。
变换操作包括map,filter,flatMap,groupByKey,reduceByKey,aggregateByKey,pipe和coalesce。
变换操作不会立刻执行,Spark遇到Transformations操作时只会记录需要这样的操作,并不会去执行,需要等到有Actions操作的时候才会真正启动计算过程进行计算。
3、RDD的【Acttion】操作-行动
行动:行动操作计算并返回一个新的值。当在一个RDD对象上调用行动函数时,会在这一时刻计算全部的数据处理查询并返回结果值。
行动操作包括:reduce,collect,count,first,take,countByKey以及foreach。
Actions操作会返回结果或把RDD数据写到存储系统中。Actions是触发Spark启动计算的动因。
Action返回值不是一个RDD。它要么是一个Scala的普通集合,要么是一个值,要么是空,最终或返回到Driver程序,或把RDD写入到文件系统中