摘要:
1.RDD的五大屬性
1.1 partitions(分區(qū))
1.2 partitioner(分區(qū)方法)
1.3 dependencies(依賴關系)
1.4 compute(獲取分區(qū)迭代列表)
1.5 preferedLocations(優(yōu)先分配節(jié)點列表)
2.RDD實現(xiàn)類舉例
2.1 MapPartitionsRDD
2.2 ShuffledRDD
2.3 ReliableCheckpointRDD
3.RDD可以嵌套嗎?
內(nèi)容:
1.RDD的五大屬性
1.1partitions(分區(qū))
partitions : 分區(qū)屬性: 每個RDD包括多個分區(qū), 這既是RDD的數(shù)據(jù)單位, 也是計算粒度, 每個分區(qū)是由一個Task線程處理. 在RDD創(chuàng)建的時候可以指定分區(qū)的個數(shù), 如果沒有指定, 那么默認分區(qū)的個數(shù)是CPU的核數(shù)(standalone).
每一分區(qū)對應一個內(nèi)存block, 由BlockManager分配.
子類可以通過調(diào)用下面的方法來獲取分區(qū)列表,當處于檢查點時,分區(qū)信息會被重寫
Partition實現(xiàn):
partition 與 iterator 方法
RDD 的 iterator(split: Partition, context: TaskContext): Iterator[T] 方法用來獲取 split 指定的 Partition 對應的數(shù)據(jù)的迭代器,有了這個迭代器就能一條一條取出數(shù)據(jù)來按 compute chain 來執(zhí)行一個個transform 操作。iterator 的實現(xiàn)如下:
其先判斷 RD