spark之rdd详解
rdd基本概念
rdd(resilient distributed dataset弹性分布式数据集合),其实就是数据的集合,但由于在大数据的场景下,需要更高的算力,需要更多的存储空间,所以将普通的数据集合进行一定的规划,但是对外仍然像操作普通数据集合一样,这本质上是java的封装思想,和hdfs一样对数据进行封装,底层架构使得数据容错性更强,算力更高,扩容更方便.
rdd的五大特性
- a list of partitions
partition由一个节点的一组分区组成,rdd是一些partition的集合,这些partition一般是加载进入内存的数据,rdd对内是存储了各个节点上的数据,对外是释放了这个对象的引用,使得用户可以像操作对象一样操作rdd
-
a function for computing each split
一个partition对应一个split,可以使用并行的函数进行计算
-
a list of depandencies on other rdds
rdd也可以成为其他rdd的依赖
-
optionally, a partitioner for key-value rdds
可选项,rdd可以进行重新分区,默认分区是根据hash值进行分区,先求hash再取摩
-
optionally , a list of preferred locations to compute each split on
可选项,会偏向选择最优的位置去进行计算(尤其是hdfs文件系统)