* - A list of partitions
* - A function for computing each split
* - A list of dependencies on other RDDs
* - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
* - Optionally, a list of preferred locations to compute each split on (e.g. block locations for
* an HDFS file)
1.一系列分区,分区有编号,有顺序的
2.每一个切片都会有一个函数作业在上面用于对数据进行处理
3.RDD和RDD之间存在依赖关系,为了容错(重算,cache,checkpoint),也就是说在内存中的RDD操作时出错或丢失会进行重算
4.可选,key value类型的RDD才有RDD[(K,V)],如果是kv类型的RDD,会有一个分区器,默认是hash-partitioned
如果RDD里面存的数据是key-value形式,则可以传递一个自定义的Partitioner进行重新分区,例如这里自定义的Partitioner是基于key进行分区,那则会将不同RDD里面的相同key的数据放到同一个partition里面
5.选,如果是从HDFS读取数据,会得到数据的最优位置(向NameNode请求元数据)
最优的位置去计算,也就是数据的本地性