1、A list of partition(具体的概念:某个节点上连续的数据)
partition的列表
一个RDD是由多个partition组成的
这些partition可以在多台服务器上
2、A function for computing each split
一般来说一个partition对应一个split
每个函数可以被应用到split
3、A list of dependence on other RDDs
每个RDD依赖于别的RDD
HadoopRDD->FilterRDD->PariRDD
如果某个RDD丢了(因为RDD在内存中,如果某个服务器宕机就没有了)就可以通过别的RDD计算出来
并行计算,如果某个RDD丢了只会重新计算某一个路径的
4、Optionally,a partitioner for key-value RDDs
如果是KV键值对的RDD可以通过key分区
5、a list of preferred locations to compute each split on
选择最佳位置
即数据所在的位置(移动计算而不移动数据)
每个RDD是瞬时存在的一个状态
当RDD1转换为RDD2时RDD1就没有了,即指向RDD1 的指针没有了所以它会被垃圾回收机制回收
有时候做RDD持久化persist还存在(是在内存中持久化即指向他的指针)是为了防止丢失
如果该RDD丢失了
在没有做持久化的情况下需要重新IO重新计算
碰到一个Action算子就提交一个job
持久化策略
只内村
如果对于一个1T的文件,spark集群只有512G那么它只读如512G的数据计算完后再计算剩余的
在使用该模式时如果内存不太够用可以序列化一下
只磁盘(节点的本地磁盘)
内存和磁盘
读数据时如果数据太大就把数据写到本地磁盘,当需要找依赖RDD时,直接从本地磁盘读取
适用于计算结果时间很长的情况,即从HDFS写数据到本地磁盘的时间不太影响总体到的时间时
《深入理解Spark》之spark特点
最新推荐文章于 2024-03-08 16:44:50 发布