溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spark創(chuàng)建RDD的方式有哪些

發(fā)布時間:2021-12-16 15:12:49 來源:億速云 閱讀:237 作者:iii 欄目:云計算

這篇文章主要介紹“spark創(chuàng)建RDD的方式有哪些”,在日常操作中,相信很多人在spark創(chuàng)建RDD的方式有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”spark創(chuàng)建RDD的方式有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

##產生的技術環(huán)境

  1. 避免在多種運算場景,多種集群部署

  2. 集群計算數(shù)據(jù),典型的思想mr,后來最重要的是hadoop,分布式集群,會把編程簡化為位置感知、容錯、負載均衡,在集群上操作超大數(shù)據(jù),這種模式是數(shù)據(jù)流的方式;hdfs->計算->hdfs tez dag 基于數(shù)據(jù)流的dag雖然實現(xiàn)任務調度和故障恢復,但是每次操作讀寫磁盤,如果同樣一次操作,如果第二次操作,完全會計算一次,比如圖計算,機器學習,比如交互式查詢

##解決問題的方式

  1. 解決上述的問題是RDD

  2. 檢查點或者回滾機制vs共享內存模型

#創(chuàng)建RDD的三種方式

  1. 通過已存在的scala集合

  2. 通過hdfs、hbase等

  3. 通過其他rdd的轉換

#Spark RDD中Transformation的Lazy特性
spark創(chuàng)建RDD的方式有哪些
textfile產生hadoopRDD和mappartitionRDD

#Spark RDD中Runtime流程解析
spark創(chuàng)建RDD的方式有哪些
RDD是邏輯結構,數(shù)據(jù)本身是block manager

#Spark RDD中Transformation的算子詳解
map:針對每個分區(qū)中的元素進行改變,分區(qū)個數(shù)不行 v1->v`1,map是根據(jù)stage中進行復合操作時執(zhí)行的
flatmap:將各個分區(qū)中的數(shù),進行轉化,匯聚成一個分區(qū)
mapPartitions:Iter=>iter.filter(_>3)針對某個分區(qū),分區(qū)數(shù)不變
glom:將每個分區(qū)形成一個數(shù)組,分區(qū)數(shù)不變
filter:根據(jù)傳入的函數(shù)的返回值,如果為true,就返回否則忽略,分區(qū)數(shù)不變
distinct:針對每個分區(qū)內重復的元素過濾,分區(qū)數(shù)不變
cartesian:針對多個RDD的分區(qū)進行笛卡爾積
union:針對多個RDD分區(qū)進行合并(不進行去重),會改變分區(qū)數(shù)
mapValues:針對分區(qū)中kv結構的RDD中的v進行操作,對k不會有影響,分區(qū)數(shù)不變
subtract:去除多個分區(qū)中交叉的元素
sample:針對RDD采樣fraction=0.5,seed=9,返回結果仍是RDD
takeSample:num=1,seed=9,返回結果不是RDD groupBy:根據(jù)k,group,相同k擁有v數(shù)組 partitionBy:針對RDD分區(qū) cogroup:這對kvRDD,的k進行分組,每個k是v的元組數(shù)組 combineByKey:groupbykey,針對分區(qū)進行分組,分區(qū)數(shù)不變 reduceByKey:對每個分區(qū)相同k的v進行操作
join:
leftOuterJoin:
rightOuterJoin:

#Spark RDD中cache和persist詳解
cache是persist的一種實現(xiàn),都是lazy操作,unpersist是立即操作

#RDD中Action的算子詳解
foreach:
collect:toArray
collectAsMap:kv模式的hashmap,k重復v會覆蓋
reduceByKeyLocally:reduce+collectAsMap:kv lookup:尋找指定k的sequence序列,優(yōu)先找partition,否則暴力掃描
count:計算所有分區(qū)中元素的個數(shù)
top:
reduce:對每個分區(qū)分別進行reduceLeft,在對所有分區(qū)結果進行reduceLeft
fold:比reduce默認一個zero
aggregate:
saveAsTextFile:
saveAsObjectFile:c<null,byteWriteable> sequence

#RDD中的緩存和檢查點不同使用場景和工作機制徹底解析

##緩存(persist)
緩存會被重用eg:1 2 3 4 [5] 6.1 6.2 6.3
[5]有10000分片,可能丟失
##檢查點(checkpoint) 在什么地方緩存,在獲取大量數(shù)據(jù)的時候,上下stage,很長的計算鏈條之后,超耗時計算,checkpoint
checkpoint:會改變rdd的血緣關系,在action后觸發(fā),引入checkpoint,避免緩存丟失,重新計算帶來的性能方面的開銷,checkpoint,在action觸發(fā)之后產生一個新的job,使用checkpoint的rdd務必使用checkpoint,這樣更快,流計算,圖計算使用很多checkpoint

#RDD窄依賴NarrowDependency和寬依賴ShuffleDependency spark創(chuàng)建RDD的方式有哪些
1個窄依賴:1個計算任務,相互獨立
源碼 Dependency
窄依賴可以優(yōu)化scheduler optimizations
寬依賴是劃分stage的依據(jù),stage是構成dag的大粒度

#兩種類型Spark RDD Task解析以及iterator解析
最后一個stage的task是resultTask,前面依賴的stage的task稱為shuffleMapTask,都共有一個runTask方法的iterator開始計算
shuffleMapTask->bucket

  1. 判斷是否有緩存

  2. 判斷是否有checkpoint
    sparkEnv

#RDD的iterator中的緩存處理內幕源碼級詳解

#Spark RDD的checkpoint處理內幕源碼級詳解

#Spark RDD容錯原理及其四大核心要點解析

#Spark應用程序中核心概念和常用術語詳解
一個application可以有若干個作業(yè)

#Spark應用程序作業(yè)調度流程和底層運行機制內幕概述
spark創(chuàng)建RDD的方式有哪些
spark創(chuàng)建RDD的方式有哪些
spark創(chuàng)建RDD的方式有哪些

#Spark應用程序運行Cluster和Client兩種模式詳解
cluster是在集群的某個worker中,client是在本地
所有的schedule都會被driver中的schedulebackend管理
excutor內部是多線程并行執(zhí)行
#DAGScheduler、TaskScheduler、SchedulerBackend解析

到此,關于“spark創(chuàng)建RDD的方式有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI