摘要:

  1.RDD的五大属性

    1.1 partitions(分区)

    1.2 partitioner(分区方法)

    1.3 dependencies(依赖关系)

    1.4 compute(获取分区迭代列表)

    1.5 preferedLocations(优先分配节点列表) 

  2.RDD实现类举例

    2.1 MapPartitionsRDD

    2.2 ShuffledRDD

    2.3 ReliableCheckpointRDD

  3.RDD可以嵌套吗?

内容:

1.RDD的五大属性

1.1partitions(分区)

  partitions : 分区属性: 每个RDD包括多个分区, 这既是RDD的数据单位, 也是计算粒度, 每个分区是由一个Task线程处理. 在RDD创建的时候可以指定分区的个数, 如果没有指定, 那么默认分区的个数是CPU的核数(standalone).

  每一分区对应一个内存block, 由BlockManager分配.

 大学生就业培训,高中生培训,在职人员转行培训,企业团训

 子类可以通过调用下面的方法来获取分区列表,当处于检查点时,分区信息会被重写

 大学生就业培训,高中生培训,在职人员转行培训,企业团训

Partition实现:

 大学生就业培训,高中生培训,在职人员转行培训,企业团训

partition 与 iterator 方法

  RDD 的 iterator(split: Partition, context: TaskContext): Iterator[T] 方法用来获取 split 指定的 Partition 对应的数据的迭代器,有了这个迭代器就能一条一条取出数据来按 compute chain 来执行一个个transform 操作。iterator 的实现如下:

大学生就业培训,高中生培训,在职人员转行培训,企业团训

  其先判断 RD