RDD是一个不可修改的,分布的对象集合。每个RDD由多个分区组成,每个分区可以同时在集群中的不同节点上计算。RDD可以包含Python,Java和Scala中的任意对象。
1.RDD不存在迭代器,遍历需要使用foreach()函数
2.RDD的子元素是list,具有迭代器
3.transformation接受RDD,返回RDD。转换采用惰性调用机制,每个RDD记录父RDD转换的方法,这种调用链表称之为血缘(lineage)。采用惰性调用,通过血缘连接的RDD操作可以管道化(pipeline),管道化的操作可以直接在单节点完成,避免多次转换操作之间数据同步的等待。
4.RDD数据只读,不可修改。如果需要修改数据,必须从父RDD转换(transformation)到子RDD
5.transformation是向后延迟的
6.RDD目前提供两个数据同步的方法:广播和累计器。
7.需要使用多次的数据需要cache,否则会进行不必要的重复操作
8.RDD的转换是并行化计算的,RDD的多个转换同样也是可以并行的。
9.每个action都是一个单独的job。
10.persis:持久化RDD,修改了RDD的meta Info中的stora leve;checkpoint:持久化RDD的同时切断Lineage,修改RDD的meta info中的lineage。均返回经过修改的RDD对象滋生而非新的RDD。