Spark中對RDD的理解
簡介
what the is RDD?
RDD(Resilient Distributed Datasets)
(Resilient 彈性)斜脂,(Distributed 分布式)登刺,(Datasets 數(shù)據(jù)集)
RDD是一個彈性分布式數(shù)據(jù)集浪漠,是分布式內(nèi)存的一個抽象概念讶凉,提供了一種高度受限共享內(nèi)存模型声滥。
RDD的特性
1.分片的數(shù)據(jù)集(list of partiton)
假設(shè)要讀取HDFS上的數(shù)據(jù),每個block塊就是一個分片(partiton),所有的分片(partiton)組合在一起就是一個集合(list) 一個RDD跺株。
2.在分片中使用函數(shù)計算(function for computing each partiton)
現(xiàn)在假設(shè)我們有map的函數(shù)苍日,和一個RDD宅楞,這個RDD中有3個partiton针姿,那么這個map函數(shù)會在每個partiton之上的進(jìn)行計算。
計算完畢后厌衙,又組成一個新的RDD距淫,以迭代的方式進(jìn)行計算。
3.數(shù)據(jù)集依賴RDD
從2.在分片中使用函數(shù)計算可以看出婶希。
首先RDD1初始化的時候是在HDFS系統(tǒng)中讀出來的數(shù)據(jù),然后通過map函數(shù)在partiton進(jìn)行計算又組成了一個新的RDD2榕暇,這樣我們可以得出結(jié)論RDD都是有依賴關(guān)系的。依賴的好處就是有容錯喻杈,假設(shè)RDD2中的partiton數(shù)據(jù)丟失了彤枢,可以重新在RDD1中計算過來。
4.KV的RDD
如果RDD中的元素是二元組類型的話筒饰,那么這個RDD就叫KV格式的RDD
5.task計算數(shù)據(jù)本地化
task理解為是一個線程缴啡,在任務(wù)調(diào)度的時候RDD會提供一個接口給我們調(diào)用,知道partiton所在的位置之后就分發(fā)task讓其執(zhí)行任務(wù)龄砰。
Driver的作用
1.負(fù)責(zé)任務(wù)的分發(fā)(task的分發(fā))
2.將每一個task的計算結(jié)果拉回到Driver端盟猖。
spark的代碼執(zhí)行流程
1.從文件系統(tǒng)中讀取數(shù)據(jù)(Flie System)加載到RDD。
2.使用transformations算子 對RDD的計算(不會立即執(zhí)行)换棚。
3.觸發(fā)Action類算子執(zhí)行(立即執(zhí)行)式镐。