RDD弹性分布式数据集特性总结
RDD弹性分布式数据集
集合
分布式的
1、最重要的特性:分区
RDD究竟是如何分区?
从外部加载数据时,比如HDFS,分区数与HDFS的block数一致
从内部的单机List中加载数据为RDD,parallelize(numpartition)
从mysql等非内置支持的数据源加载数据,分区就取决于自定义的partitioner
初创的RDD经过一系列的转换操作,分区数通常不会变,除了shuffle操作
rdd.groupBy(numpartition)
比如之前是8个分区,现在shuffle指定4个分区,最后得到的新rdd就是4个分区
如果不指定,则默认为该application所获得的executor数
手动repartition也会改变分区
rdd.repartition(8) //增加分区
rdd.coalesce(4) //减少分区
2、拥有一个抽象函数Compute-->Operate --> Iterate
在Compute之上,提供了诸如map flatMap filter 等高级转换API
我们就可以把逻辑写成匿名函数传入这些高级API(高阶函数)
3、提供了一个checkpoint的容错机制
你可以在任何运算环节上,将该环节产生的rdd持久化到外部存储中
如果后续过程出错,则只要从这个checkpoint中接着计算即可
rdd.checkpoint()
rdd.ischeckpointed =》false
rdd.action()后才会真正持久化
4、依赖关系Lineage血统
血统的作用:容错
划分DAG stage的依据
sc.map.reduce....