Spark筆記2. RDD初探


RDD

先只做一個靜態(tài)的分析座韵,即上圖最左面部份公壤,動態(tài)調度執(zhí)行稍后分析


概念理解

做為新手,RDD看的我頭痛商模,Resilient Distributed Dataset, ?彈性分布式數(shù)據(jù)集奠旺,有哪些特點呢蜘澜?

1. 首先他是 Dataset, 俗稱數(shù)據(jù)集∠炀危可以類比 Redis 里的 ZSET, HSET, SET, 保存數(shù)據(jù)的一種組織結構而已鄙信。區(qū)別就在于 RDD 是分布式,粗粒度

2. 關于分布式忿晕,大家所熟知的就是將數(shù)據(jù)分片装诡。類比 MySQL 分庫分表,可以有按 ID 做 Range 分怎践盼,也可以按 Hash鸦采。RDD 也同樣,具體取決于 partitioner 如何實現(xiàn)咕幻。

3. 具有 fault tolerance 特性渔伯,做個對比,關系數(shù)據(jù)庫一般都是對分區(qū) partition 做多副本來做到容災和高可用谅河。但是RDD 完全另外一個思路咱旱,他有一個 lineage(血統(tǒng)?绷耍?) 的概念吐限,每一個 partition 都可以回溯來重建。

4. 由于 RDD 只讀褂始,每一個 RDD 都由父 RDD 和做用之上的操作生成诸典,父子 partition 涉及一一對應(窄依賴)和一對多(寬依賴),而這種依賴關系就是構成 fault tolerance 回溯的基礎崎苗。

上面只是對于 RDD 靜態(tài)的分析狐粱,至于動態(tài)的調度執(zhí)行和 stage 劃分下次再分享。


RDD 五要素

1. A list of partitions ? 數(shù)據(jù)分區(qū)

2. A function for computing each split 每個片的處理函數(shù)

3. A list of dependencies on other RDDs 依賴

4. Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned) 分區(qū)函數(shù)很重要胆数,對于join group 優(yōu)化

5. Optionally, a list of preferred locations to compute each split on (e.g. block locations for?an HDFS file)


例子: 行數(shù)統(tǒng)計

來看一個官網(wǎng) quick start 例子肌蜻,打開 spark-shell

scala> val textFile = sc.textFile("README.md")

textFile: org.apache.spark.rdd.RDD[String] = README.md MapPartitionsRDD[1] at textFile at:27

textFile 是一個 MapPartitionsRDD, 他沒有 Dependency, 并且也不會讀取數(shù)據(jù),不做任何操作

scala> val linesWithSpark = textFile.filter(line => line.contains("Spark"))

linesWithSpark: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[2] at filter at:29

linesWithSpark 同樣也是一個 MapPartitionsRDD, 他有 Dependency, 就是上文的 textFile, 并且附加一個 filter 操作必尼,返回包含 “Spark” 的記錄

scala> linesWithSpark.count

res0: Long = 17

最后執(zhí)行 count 函數(shù)蒋搜,得到記錄 17?

transformation 和 action

RDD 只讀,所以每次 filter, map, flatMap 等操作都是生成一個新的 RDD, 多個 RDD 為鏈式關系判莉,由 Denpendency 和 compute 聯(lián)系在一起豆挽。下圖是主要的兩類函數(shù)。

transformations和action

transformation: 惰性的操作券盅,只生成新的 RDD, 描述執(zhí)行邏輯

action: 會提交 job, 交給 worker 去執(zhí)行帮哈,流式依次計算所有 transformation 操作,流式的精髓在于 Iterator

對應文中例子锰镀,textFile和filter 都是 transformation 操作娘侍,只負責生成 RDD, 只有最后一個 count 才發(fā)起 job 執(zhí)行咖刃。

filter

filter 函數(shù)簡單明了,直接生成一個新的 MapPartitionsRDD, 重點在于兩個參數(shù) this 和 iter 操作的閉包

MapPartitionsRDD

MapPartitionsRDD 要重寫幾個關鍵成員函數(shù)私蕾,partitioner 決定如何做分區(qū)僵缺,getPartitions 決定如何從父 RDD 中獲取自已使用的 partition,這塊是簡單的 one to one依賴踩叭,即窄依賴,后續(xù)會涉及到 shuffle 寬依賴再分析翠胰。compute 封裝傳弟的 f 閉包容贝,直接作用于 partition, 這里都是針對 Iterator, 不到最后觸發(fā)是不會執(zhí)行。

Reduce

count不具有代表現(xiàn)之景,貼一個 reduce 源碼, 最常見的就是 reduce(_+_)斤富,如果大家了解單機的,肯定知道原理锻狗,對于分布式的RDD也一樣满力。 jobResult 是一個 Option[T] 結果,mergeResult 決定如何對各個分區(qū)的結果進行操作轻纪,就是調用 reduce(f: (T,T) => T): T 里面的閉包f油额,對于各分區(qū)也執(zhí)行 f。

RDD 的初探刻帚,DAGSchdule 后文分析潦嘶,如有理解有誤的請大家指證

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市崇众,隨后出現(xiàn)的幾起案子掂僵,更是在濱河造成了極大的恐慌,老刑警劉巖顷歌,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锰蓬,死亡現(xiàn)場離奇詭異,居然都是意外死亡眯漩,警方通過查閱死者的電腦和手機芹扭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坤塞,“玉大人冯勉,你說我怎么就攤上這事∧≤剑” “怎么了灼狰?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長浮禾。 經(jīng)常有香客問我交胚,道長份汗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任蝴簇,我火速辦了婚禮杯活,結果婚禮上,老公的妹妹穿的比我還像新娘熬词。我一直安慰自己旁钧,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布互拾。 她就那樣靜靜地躺著歪今,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颜矿。 梳的紋絲不亂的頭發(fā)上寄猩,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音骑疆,去河邊找鬼田篇。 笑死,一個胖子當著我的面吹牛箍铭,可吹牛的內容都是我干的泊柬。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼坡疼,長吁一口氣:“原來是場噩夢啊……” “哼彬呻!你這毒婦竟也來了?” 一聲冷哼從身側響起柄瑰,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤闸氮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后教沾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒲跨,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年授翻,在試婚紗的時候發(fā)現(xiàn)自己被綠了或悲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡堪唐,死狀恐怖巡语,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情淮菠,我是刑警寧澤男公,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站合陵,受9級特大地震影響枢赔,放射性物質發(fā)生泄漏澄阳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一踏拜、第九天 我趴在偏房一處隱蔽的房頂上張望碎赢。 院中可真熱鬧,春花似錦速梗、人聲如沸肮塞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽峦嗤。三九已至,卻和暖如春屋摔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背替梨。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工钓试, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人副瀑。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓弓熏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親糠睡。 傳聞我的和親對象是個殘疾皇子挽鞠,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內容