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