spark學(xué)習(xí)二RDD(Core部分)

1、簡(jiǎn)介

RDD(Resilient Distributed Dataset)叫做彈性分布式數(shù)據(jù)集,是Spark中最基本的數(shù)據(jù)抽象,它代表一個(gè)不可變、可分區(qū)、里面的元素可并行計(jì)算的集合。RDD具有數(shù)據(jù)流模型的特點(diǎn):自動(dòng)容錯(cuò)、位置感知性調(diào)度和可伸縮性。

2、特性

只讀:

RDD在創(chuàng)建之后只允許讀操作,不允許寫(xiě)操作,每個(gè)計(jì)算操作都是產(chǎn)生新的RDD

分區(qū):

RDD會(huì)把其中的元素進(jìn)行partition分區(qū),計(jì)算是以分區(qū)為單位進(jìn)行

容錯(cuò):

相比其他系統(tǒng)的細(xì)顆粒度的內(nèi)存數(shù)據(jù)更新級(jí)別的備份或者LOG機(jī)制,RDD的血緣關(guān)系記錄的是粗顆粒度的特定數(shù)據(jù)Transformation操作(如filter、map、join等)行為。當(dāng)這個(gè)RDD的部分分區(qū)數(shù)據(jù)丟失時(shí),它可以通過(guò)Lineage獲取足夠的信息來(lái)重新運(yùn)算和恢復(fù)丟失的數(shù)據(jù)分區(qū)。因?yàn)檫@種粗顆粒的數(shù)據(jù)模型,限制了Spark的運(yùn)用場(chǎng)合,所以Spark并不適用于所有高性能要求的場(chǎng)景,但同時(shí)相比細(xì)顆粒度的數(shù)據(jù)模型,也帶來(lái)了性能的提升。

RDD依賴(lài):

RDD一般由讀取文件或者并行化數(shù)組產(chǎn)生,通過(guò)每次的transformation操作都會(huì)產(chǎn)生新的一個(gè)RDD,然后RDD之間的依賴(lài)關(guān)系稱(chēng)為血緣,子RDD通過(guò)父RDD和算子就能夠得到。

緩存:

RDD可以通過(guò)persist方法進(jìn)行緩存操作,把RDD放到每個(gè)worker上的executor上,這樣該RDD就可以不用傳給每個(gè)task,增加計(jì)算速度明顯

3、spark代碼運(yùn)行(推薦)

?1)idea等工具運(yùn)行spark代碼,通過(guò)maven構(gòu)建項(xiàng)目引入對(duì)應(yīng)gav

?2)spark-shell交互工具,spark的bin目錄:./bin/spark-shell --master local[4]

可以通過(guò)ui進(jìn)行監(jiān)控,啟動(dòng)日志可以看到監(jiān)聽(tīng)端口

?3)spark-submit提交,把本地開(kāi)發(fā)好的項(xiàng)目打成jar包,然后通過(guò)spark-submit命令運(yùn)行

4、創(chuàng)建RDD

其中sc為SparkContext對(duì)象

并行化數(shù)組方式


讀取文件

5、RDD測(cè)試代碼

測(cè)試代碼

?著作權(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)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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