1、A list of partitions
一系列的分片:比如说128M一片,类似于Hadoop中的split
2、A function for computing each split
每个分片上都有一个函数去迭代/执行/计算它
3、A list of dependencies on other RDDs
一系列的依赖:RDDa转换为RDDb,RDDb转换为RDDc,那么RDDc就依赖于RDDb,RDDb就依赖于RDDa
4、Optionally,a Partitioner for key-value RDDs
对应key-value的RDD可以指定一个partitioner,告诉它如何分片,常用的有hash,range(可以类比MR中的getPartition)
5、Optionally,a list of prefered location(s) to computer each split on
要运行的计算/执行最好在哪(几)个机器上运行。数据本地性,机器去找数据,而不是数据去找机器
比如Hadoop默认一个block会有三个备份,或者spark cache到内存可能通过StorageLevel设置了多个副本,所以一个partition可能返回多个最佳位置