三大資料結構:
—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