天天看點

SparkCore 簡單總結一下三大資料結構:常用算子

三大資料結構:

—RDD:彈性分布式資料集

------定義:

---------資料集:存數的資料的計算邏輯

---------分布式:資料的來源&計算&資料的存儲,都可以是分布式的

---------彈性:

------------1.血緣(依賴關系):spark可以通過特殊的處理方案減少依賴關系(checkpoint)

------------2.計算:Spark的計算是基于記憶體的是以性能特别高,可以和磁盤靈活切換

------------3.分區:Spark在建立預設分區後可以通過指定的算子來改變分區數量

------------4.容錯:Spark在執行計算時,如果發生了錯誤,需要進行重試處理(血統和checkpoint都是容錯機制)

---------spark中的各種數量:

------------1.Executor:可以通過送出應用的參數進行設定,一個worker可以有多個Executor

------------2.Partition:預設情況下,采取的是Hadoop的切片規則,如果讀取記憶體中的資料,可以通過特定的算法進行設定,可以通過其他算子進行改變

多個階段(Stage、shuffle)的場合,下一個階段分區數量,取決于最後一個RDD的分區數,最後一個RDD是多少就是多少,但

是内部的資料發生了變化

------------3.Stage:階段數量=1(最後的階段resultStage)+Shuffle依賴數量;劃分階段就是為了執行任務的等待,因為shuffle需要落地,需要時間。

------------4.Task:任務數量,原則上一個分區就是一個任務,但是實際應用中可以動态調整,可以3-5倍的核心數的Task

------建立:

------------1.記憶體中建立:MakeRDD

------------2.存儲中建立:textFile

------------3.從其他RDD建立:轉換算子

------屬性:

------------1.分區:hash分區,ranger分區,自定義分區

------------2.依賴關系:寬依賴和窄依賴

------------3.分區器:預設是hash分區

------------4.優先位置:機架感覺

------------5.計算函數:算子

------使用:

------------1.轉換算子:

---------------1.1、單Value類型

---------------1.2、雙Value類型

---------------1.3、K-V類型

------------2.行動算子:RunJob類算子

—廣播變量Broadcast:分布式共享隻讀資料

------1.能夠精确的統計資料的各種資料例如:

可以統計出符合userID的記錄數,在同一個時間段内産生了多少次購買,可以使用ETL進行資料清洗,并使用Accumulator來進行資料的統計

------2.廣播變量減少網絡資料的傳輸

------3.是一個調優政策

------4.sc.broadcast()

—累加器Accumulator:分布式共享隻寫資料

------1.作為調試工具,能夠觀察每個task的資訊,通過累加器可以在sparkIUI觀察到每個task所處理的記錄數

------2.實作一個累加器首先要繼承一個父類AccumulatorV2[IN][OUT]新版本的累加器

------3.繼承抽象方法,實作六個方法:

---------- 初始值:isZero,

---------- 複制:copy,

---------- 重置:reset,

---------- 累加(局部的):add,

---------- 合并(全局的)merge,

---------- 獲得結果:value

常用算子

https://blog.csdn.net/qq_36525906/article/details/102895941