日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

优点 spark_spark(一)

發(fā)布時間:2025/3/20 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 优点 spark_spark(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Spark簡介:

Apache Spark是專為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎,Spark擁有Hadoop MapReduce所具有的的所有優(yōu)點(diǎn),但不同于MapReduce得是job中間輸出結(jié)果可以保存在內(nèi)存中,從而不需要去讀取HDFS,因此Spark能更好的適用于數(shù)據(jù)挖掘于機(jī)器學(xué)習(xí)等需要的迭代的MapReduce的算法,Spark是Scala編寫,方便快速編程

spark生態(tài)圖:

Spark和MapReduce的區(qū)別

Spark基于內(nèi)存,MapReduce基于hdfs.Spark處理數(shù)據(jù)的能力一般是MapReduce的十倍以上,Spark中除了基于內(nèi)存計算外,還有DAG有向無環(huán)圖來切分任務(wù)的執(zhí)行先后順序

Spark常用運(yùn)行模式:

Local --本地運(yùn)行模式

Standalone --是Spark自帶的一個資源調(diào)度框架,支持完全分布式

Yarn --Hadoop生態(tài)圈的一個資源調(diào)度框架,Spark也可以基于其來進(jìn)行計算

核心庫 --SparkCore

RDD

概念:

RDD(Resilient Distributed Dateset),彈性分布式數(shù)據(jù)集

RDD五大特性:

1.RDD是由一系列的partition組成的

2.函數(shù)是作用在每一個partition(split)上的

3.RDD之間有一系列的依賴關(guān)系

4.分區(qū)器是作用在K,V格式的RDD上的

5.RDD提供一系列最佳的計算位置

RDD圖解:

要點(diǎn):

textFile方法底層封裝的是讀取MR讀取文件的方式,讀取文件之前先split,默認(rèn)split大小是一個block塊大小

RDD實(shí)際上不存儲數(shù)據(jù),這里為了方便理解,暫時理解為存儲數(shù)據(jù)

如果RDD里面存儲的數(shù)據(jù)都是二元組對象,那么這個RDD我們就叫做K,V格式的RDD

體現(xiàn)RDD的彈性(容錯)

--partition數(shù)量,大小沒有限制

--RDD之間的依賴關(guān)系,可以基于上一個RDD重新算出RDD

體現(xiàn)RDD的分布式:

--RDD由partition組成,partition分布在不同的節(jié)點(diǎn)上

RDD提供最佳的計算位置,體現(xiàn)了數(shù)據(jù)本地化,大數(shù)據(jù)中"計算以東部移動數(shù)據(jù)"的概念

Spark任務(wù)執(zhí)行原理

以上圖中,Driver和Worker式啟動在節(jié)點(diǎn)上的進(jìn)程,運(yùn)行在jvm中的進(jìn)程

Driver與集群節(jié)點(diǎn)之間有頻繁的通信

Driver負(fù)責(zé)任務(wù)(tasks)的分發(fā)和結(jié)果的回收,任務(wù)的調(diào)度

Worker和Master是Standalone資源調(diào)度框架里面資源管理的從節(jié)點(diǎn),也是jvm進(jìn)程

Transformations轉(zhuǎn)換算子

Transformations算子是延遲執(zhí)行,也叫懶加載執(zhí)行

filter:過濾符合條件的記錄數(shù),true保留,false過濾

map:將一個RDD中的每一個數(shù)據(jù)項(xiàng),通過map中的映射函數(shù)變?yōu)橐粋€新的元素特點(diǎn):輸入一條,輸出一條

flatMap:先map后flat,與map類似,每個輸入項(xiàng)可以映射為0-多個輸出項(xiàng)

sample:隨機(jī)抽樣算子,根據(jù)傳進(jìn)去小數(shù)按比例進(jìn)行又放回或者無放回的抽樣

reduceByKey:將相同的key根據(jù)相應(yīng)的邏輯進(jìn)行處理

sortByKey/sortBy:作用在K,V格式的RDD上,對key進(jìn)行升降序排序

Action行動算子

Action類算子是觸發(fā)執(zhí)行,一個application應(yīng)用程序中有幾個Action類算子執(zhí)行,就有幾個job運(yùn)行

count:返回數(shù)據(jù)集中的元素數(shù),會在結(jié)果計算完成會受到Driver端

take(n):返回一個包含數(shù)據(jù)及前n個元素的集合

first:返回數(shù)據(jù)集中的第一個元素

foreach:循環(huán)遍歷數(shù)據(jù)集,運(yùn)行相應(yīng)的邏輯

collect:將計算結(jié)果會收到Driver端

控制算子

控制算子有三種,cache,persist,checkpoint,以上算子都可以將RDD持久化,持久化單位為partition,cache和persist是懶執(zhí)行的,必須有一個action類算子觸發(fā)執(zhí)行,checkpoint算子不僅僅能將RDD持久化,還能切斷RDD之間的依賴關(guān)系

cache

默認(rèn)將RDD的數(shù)據(jù)持久化到內(nèi)存中,

persist

可以指定持久化的級別,最常用的是MEMORYONLY和MEMORY_AND_DISK

_2表示副本數(shù)持久化級別如下:

cache和persist注意事項(xiàng);

1.cache和persist都是懶執(zhí)行,必須要有一個action類算子來觸發(fā)執(zhí)行

2.cache和persist算子的返回值可以賦值給一個變量,在其他job中直接使用這個變量就是使用持久化的數(shù)據(jù)了,持久化單位是partition

3.cache和persist算子后不能立即緊跟action類算子

checkpoint

checkpoint將RDD持久化到磁盤中,還可以切斷RDD之間的依賴關(guān)系

checkpoint的執(zhí)行原理:

1.當(dāng)RDD的job執(zhí)行完畢之后,會從finalRDD從后往前回溯

2.當(dāng)回溯到摸一個RDD調(diào)用了checkpoint方法,會對當(dāng)前的RDD做一個標(biāo)記

3.Spark框架會自動啟動一個新的job,重新計算這個RDD的數(shù)據(jù),將數(shù)據(jù)持久化到HDFS中

優(yōu)化:對RDD執(zhí)行checkpoint方法之前,最好對這個RDD先執(zhí)行cache,這樣新啟動的job只需將內(nèi)存中的數(shù)據(jù)拷貝到HDFS上就可以了,省去了重新計算的這一步

總結(jié)

以上是生活随笔為你收集整理的优点 spark_spark(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。