2019-03-09

一宪睹、概述

RDD創(chuàng)建后就可以在RDD上進(jìn)行數(shù)據(jù)處理巾腕。RDD支持兩種操作:轉(zhuǎn)換(transformation)您机,即從現(xiàn)有的數(shù)據(jù)集創(chuàng)建一個(gè)新的數(shù)據(jù)集咽安;動(dòng)作(action)蛹疯,即在數(shù)據(jù)集上進(jìn)行計(jì)算后常侣,返回一個(gè)值給Driver程序但狭。

RDD 的轉(zhuǎn)化操作是返回一個(gè)新的 RDD 的操作复隆,比如 map() 和 filter() ,而行動(dòng)操作則是向驅(qū)動(dòng)器程序返回結(jié)果或把結(jié)果寫入外部系統(tǒng)的操作整袁,會(huì)觸發(fā)實(shí)際的計(jì)算菠齿,比如 count() 和 first() 。Spark 對(duì)待轉(zhuǎn)化操作和行動(dòng)操作的方式很不一樣坐昙,因此理解你正在進(jìn)行的操作的類型是很重要的绳匀。如果對(duì)于一個(gè)特定的函數(shù)是屬于轉(zhuǎn)化操作還是行動(dòng)操作感到困惑,你可以看看它的返回值類型:轉(zhuǎn)化操作返回的是 RDD炸客,而行動(dòng)操作返回的是其他的數(shù)據(jù)類型疾棵。

RDD中所有的Transformation都是惰性的,也就是說(shuō)嚷量,它們并不會(huì)直接計(jì)算結(jié)果陋桂。相反的它們只是記住了這些應(yīng)用到基礎(chǔ)數(shù)據(jù)集(例如一個(gè)文件)上的轉(zhuǎn)換動(dòng)作。只有當(dāng)發(fā)生一個(gè)要求返回結(jié)果給Driver的Action時(shí)蝶溶,這些Transformation才會(huì)真正運(yùn)行嗜历。

這個(gè)設(shè)計(jì)讓Spark更加有效的運(yùn)行。

二抖所、RDD支持的常用Transformation如下:

map(func)

返回一個(gè)新的分布式數(shù)據(jù)集梨州,該數(shù)據(jù)集由每一個(gè)輸入元素經(jīng)過(guò)func函數(shù)轉(zhuǎn)換后組成

fitler(func)

返回一個(gè)新的數(shù)據(jù)集,該數(shù)據(jù)集由經(jīng)過(guò)func函數(shù)計(jì)算后返回值為true的輸入元素組成

flatMap(func)

類似于map田轧,但是每一個(gè)輸入元素可以被映射為0或多個(gè)輸出元素(因此func返回一個(gè)序列暴匠,而不是單一元素)

mapPartitions(func)

類似于map,但獨(dú)立地在RDD上每一個(gè)分片上運(yùn)行傻粘,因此在類型為T的RDD上運(yùn)行時(shí)每窖,func函數(shù)類型必須是Iterator[T]=>Iterator[U]

mapPartitionsWithSplit(func)

類似于mapPartitons,但func帶有一個(gè)整數(shù)參數(shù)表示分片的索引值弦悉。因此在類型為T的RDD上運(yùn)行時(shí)窒典,func函數(shù)類型必須是(Int,Iterator[T])=>Iterator[U]

sample(withReplacement,fraction,seed)

根據(jù)fraction指定的比例對(duì)數(shù)據(jù)進(jìn)行采樣,可以選擇是否用隨機(jī)數(shù)進(jìn)行替換稽莉,seed用于隨機(jī)數(shù)生成器種子

union(otherDataSet)

返回一個(gè)新數(shù)據(jù)集瀑志,新數(shù)據(jù)集是由原數(shù)據(jù)集和參數(shù)數(shù)據(jù)集聯(lián)合而成

distinct([numTasks])

返回一個(gè)包含原數(shù)據(jù)集中所有不重復(fù)元素的新數(shù)據(jù)集

groupByKey([numTasks])

在一個(gè)(K,V)數(shù)據(jù)集上調(diào)用,返回一個(gè)(K,Seq[V])對(duì)的數(shù)據(jù)集污秆。注意默認(rèn)情況下劈猪,只有8個(gè)并行任務(wù)來(lái)操作,但是可以傳入一個(gè)可選的numTasks參數(shù)來(lái)改變它

reduceByKey(func,[numTasks])

在一個(gè)(K,V)對(duì)的數(shù)據(jù)集上調(diào)用良拼,返回一個(gè)(K,V)對(duì)的數(shù)據(jù)集战得,使用指定的reduce函數(shù),將相同的key的值聚合到一起将饺。與groupByKey類似贡避,reduceByKey任務(wù)的個(gè)數(shù)是可以通過(guò)第二個(gè)可選參數(shù)來(lái)設(shè)置的

sortByKey([[ascending],numTasks])

在一個(gè)(K,V)對(duì)的數(shù)據(jù)集上調(diào)用痛黎,K必須實(shí)現(xiàn)Ordered接口,返回一個(gè)按照Key進(jìn)行排序的(K,V)對(duì)數(shù)據(jù)集刮吧。升序或降序由ascending布爾參數(shù)決定

join(otherDataset0,[numTasks])

在類型為(K,V)和(K,W)數(shù)據(jù)集上調(diào)用湖饱,返回一個(gè)相同的key對(duì)應(yīng)的所有元素在一起的(K,(V,W))數(shù)據(jù)集

cogroup(otherDataset,[numTasks])

在類型為(K,V)和(K,W)數(shù)據(jù)集上調(diào)用,返回一個(gè)(K,Seq[V],Seq[W])元祖的數(shù)據(jù)集杀捻。這個(gè)操作也可以稱為groupwith

cartesain(ohterDataset)

笛卡爾積井厌,在類型為T和U類型的數(shù)據(jù)集上調(diào)用,返回一個(gè)(T,U)對(duì)數(shù)據(jù)集(兩兩的元素對(duì))

三致讥、RDD支持的常用action如下表

reduce(func)

通過(guò)函數(shù)func(接收兩個(gè)參數(shù)仅仆,返回一個(gè)參數(shù))聚集數(shù)據(jù)集中的所有元素。這個(gè)功能必須可交換且可關(guān)聯(lián)的垢袱,從而可以正確的并行運(yùn)行

collect()

在驅(qū)動(dòng)程序中墓拜,以數(shù)組形式返回?cái)?shù)據(jù)集中的所有元素。通常在使用filter或者其他操作返回一個(gè)足夠小的數(shù)據(jù)子集后再使用會(huì)比較有用

count()

返回?cái)?shù)據(jù)集元素個(gè)數(shù)

first()

返回?cái)?shù)據(jù)集第一個(gè)元素(類似于take(1))

take(n)

返回一個(gè)由數(shù)據(jù)集前n個(gè)元素組成的數(shù)組

注意 這個(gè)操作目前并非并行執(zhí)行请契,而是由驅(qū)動(dòng)程序計(jì)算所有的元素

takeSample(withReplacement,num,seed)

返回一個(gè)數(shù)組咳榜,該數(shù)組由從數(shù)據(jù)集中隨機(jī)采樣的num個(gè)元素組成,可以選擇是否由隨機(jī)數(shù)替換不足的部分爽锥,seed用戶指定隨機(jī)數(shù)生成器種子

saveAsTextFile(path)

將數(shù)據(jù)集的元素以textfile的形式保存到本地文件系統(tǒng)--HDFS或者任何其他Hadoop支持的文件系統(tǒng)涌韩。對(duì)于每個(gè)元素,Spark將會(huì)調(diào)用toString方法氯夷,將它轉(zhuǎn)換為文件中的文本行

saveAsSequenceFile(path)

將數(shù)據(jù)集中的元素以Hadoop sequencefile的格式保存到指定的目錄下臣樱,可以是本地系統(tǒng)、HDFS或者任何其他的Hadoop支持的文件系統(tǒng)腮考。這個(gè)只限于由key-value對(duì)組成雇毫,并實(shí)現(xiàn)了Hadoop的Writable接口,或者可以隱式的轉(zhuǎn)換為Writable的RDD(Spark包括了基本類型轉(zhuǎn)換踩蔚,例如Int嘴拢、Double、String等)

countByKey()

對(duì)(K,V)類型的RDD有效寂纪,返回一個(gè)(K,Int)對(duì)的map,表示每一個(gè)key對(duì)應(yīng)的元素個(gè)數(shù)

foreach(func)

在數(shù)據(jù)集的每一個(gè)元素上赌结,運(yùn)行函數(shù)func進(jìn)行更新捞蛋。通常用于邊緣效果,例如更新一個(gè)疊加器柬姚,或者和外部存儲(chǔ)系統(tǒng)進(jìn)行交互拟杉,如HBase

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市量承,隨后出現(xiàn)的幾起案子搬设,更是在濱河造成了極大的恐慌穴店,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拿穴,死亡現(xiàn)場(chǎng)離奇詭異泣洞,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)默色,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門球凰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人腿宰,你說(shuō)我怎么就攤上這事呕诉。” “怎么了吃度?”我有些...
    開(kāi)封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵甩挫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我椿每,道長(zhǎng)伊者,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任拖刃,我火速辦了婚禮删壮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘兑牡。我一直安慰自己央碟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布均函。 她就那樣靜靜地躺著亿虽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苞也。 梳的紋絲不亂的頭發(fā)上洛勉,一...
    開(kāi)封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音如迟,去河邊找鬼收毫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛殷勘,可吹牛的內(nèi)容都是我干的此再。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼玲销,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼输拇!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起贤斜,我...
    開(kāi)封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤策吠,失蹤者是張志新(化名)和其女友劉穎逛裤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體猴抹,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡带族,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洽糟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炉菲。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖坤溃,靈堂內(nèi)的尸體忽然破棺而出拍霜,到底是詐尸還是另有隱情,我是刑警寧澤薪介,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布祠饺,位于F島的核電站,受9級(jí)特大地震影響汁政,放射性物質(zhì)發(fā)生泄漏道偷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一记劈、第九天 我趴在偏房一處隱蔽的房頂上張望勺鸦。 院中可真熱鬧,春花似錦目木、人聲如沸换途。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)军拟。三九已至,卻和暖如春誓禁,著一層夾襖步出監(jiān)牢的瞬間懈息,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工摹恰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辫继,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓俗慈,卻偏偏與公主長(zhǎng)得像骇两,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子姜盈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容