Spark中對(duì)RDD的理解

Spark中對(duì)RDD的理解

簡(jiǎn)介

what the is RDD?

RDD(Resilient Distributed Datasets)
(Resilient 彈性),(Distributed 分布式),(Datasets 數(shù)據(jù)集)
RDD是一個(gè)彈性分布式數(shù)據(jù)集,是分布式內(nèi)存的一個(gè)抽象概念,提供了一種高度受限共享內(nèi)存模型。

RDD的特性

1.分片的數(shù)據(jù)集(list of partiton)

假設(shè)要讀取HDFS上的數(shù)據(jù),每個(gè)block塊就是一個(gè)分片(partiton),所有的分片(partiton)組合在一起就是一個(gè)集合(list) 一個(gè)RDD。

2.在分片中使用函數(shù)計(jì)算(function for computing each partiton)

現(xiàn)在假設(shè)我們有map的函數(shù),和一個(gè)RDD,這個(gè)RDD中有3個(gè)partiton,那么這個(gè)map函數(shù)會(huì)在每個(gè)partiton之上的進(jìn)行計(jì)算。
計(jì)算完畢后,又組成一個(gè)新的RDD,以迭代的方式進(jìn)行計(jì)算。


RDD計(jì)算順序

3.數(shù)據(jù)集依賴RDD

從2.在分片中使用函數(shù)計(jì)算可以看出。
首先RDD1初始化的時(shí)候是在HDFS系統(tǒng)中讀出來(lái)的數(shù)據(jù),然后通過(guò)map函數(shù)在partiton進(jìn)行計(jì)算又組成了一個(gè)新的RDD2,這樣我們可以得出結(jié)論RDD都是有依賴關(guān)系的。依賴的好處就是有容錯(cuò),假設(shè)RDD2中的partiton數(shù)據(jù)丟失了,可以重新在RDD1中計(jì)算過(guò)來(lái)。

4.KV的RDD

如果RDD中的元素是二元組類型的話,那么這個(gè)RDD就叫KV格式的RDD

5.task計(jì)算數(shù)據(jù)本地化

task理解為是一個(gè)線程,在任務(wù)調(diào)度的時(shí)候RDD會(huì)提供一個(gè)接口給我們調(diào)用,知道partiton所在的位置之后就分發(fā)task讓其執(zhí)行任務(wù)。

Driver的作用

1.負(fù)責(zé)任務(wù)的分發(fā)(task的分發(fā))
2.將每一個(gè)task的計(jì)算結(jié)果拉回到Driver端。

spark的代碼執(zhí)行流程

1.從文件系統(tǒng)中讀取數(shù)據(jù)(Flie System)加載到RDD。
2.使用transformations算子 對(duì)RDD的計(jì)算(不會(huì)立即執(zhí)行)。
3.觸發(fā)Action類算子執(zhí)行(立即執(zhí)行)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容