RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。这里的弹性指的是RDD可以根据当前情况自动进行内存和硬盘存储的转换
在spark中所有的计算都是围绕着RDD操作的,每个 RDD 都被分为多个分区,这些分区运行在集群中的不同节点上,并且RDD也可以缓存到内存中
RDD支持两种操作:转化操作和行动操作。
RDD 的转化操作是返回一个新的 RDD的操作,新的RDD则包含了如何从其他RDDs衍生所必需的信息,所以说RDDs之间是有依赖关系的。基于RDDs之间的依赖,RDDs会形成一个有向无环图DAG,该DAG描述了整个流式计算的流程,实际执行的时候,RDD是通过血缘关系(Lineage)一气呵成的,即使出现数据分区丢失,也可以通过血缘关系重建分区
而行动操作则是向驱动器程序返回结果或把结果写入外部系统的操作。简单点说转换操作是修改属性状态的,行动是计算数据的
Spark采用惰性计算模式(懒执行),RDD只有第一次在一个行动操作中用到时,才会真正计算。Spark可以优化整个计算过程。默认情况下,Spark 的 RDD 会在你每次对它们进行行动操作时重新计算。如果想在多个行动操作中重用同一个 RDD,可以使用 RDD.persist() 让 Spark 把这个 RDD 缓存下来。
RDD特点:分区,只读,依赖,缓存,checkpoint检查点
转换方法
map(func)
经过函数转换后变成新的RDD
mapPartitions(func)