怎么解析spark的宽窄依赖和持久化
生活随笔
收集整理的這篇文章主要介紹了
怎么解析spark的宽窄依赖和持久化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本篇文章為大家展示了怎么解析spark的寬窄依賴和持久化,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
一.持久化官網
1.官網位置截圖
2.cache 源碼
cache底層調用的是persisit,默認參數是StorageLevel.MEMORY_ONLY cache用完最好手動干掉
3.StorageLevel源碼
4.StorageLevel 解釋
是否使用磁盤 是否使用內存 不管 反序列化 副本
5.persisit 可以傳的參數
6.官網:怎么選擇緩存?
7.上圖解釋
選擇默認第一種MEMORY_ONLY 內存不夠選怎序列化 磁盤最好別選擇 不要用這個副本形式耗內存 緩存選擇: Spark’sstoragelevelsaremeanttoprovidedifferenttrade-offs(權衡)betweenmemoryusageandCPUefficiency.Werecommendgoingthroughthefollowingprocesstoselectone:選擇方式 優先級從上到下 優先選擇第一個MEMORY_ONLY,內存實在不夠就序列化 IfyourRDDsfitcomfortablywiththedefaultstoragelevel(MEMORY_ONLY),leavethemthatway默認可以搞定就用默認的.ThisisthemostCPU-efficientoption,allowingoperationsontheRDDstorunasfastaspossible. 不要選擇java的序列化 Ifnot,tryusingMEMORY_ONLY_SERandselectingafastserializationlibrarytomaketheobjectsmuchmorespace-efficient空間很好,butstillreasonablyfasttoaccess.(JavaandScala) Don’tspilltodisk不要放到磁盤unlessthefunctionsthatcomputedyourdatasetsareexpensive,ortheyfilteralargeamountofthedata.Otherwise,recomputingapartitionmaybeasfastasreadingitfromdisk.
二.寬窄依賴,血緣關系
1.總結
寬依賴用shufer 寬窄依賴容錯程度不一樣 一個shuffer產生兩個stage,兩個產生三個stage等等 Lineage血緣關系用于容錯很多都是記錄的 textfile=》xx=>yy 描述的是一個RDD如何從父RDD過來的 RDD作用一個函數就是對RDD里面的分區作用一個函數 丟失了根據父RDD重新算一下 dependence 寬依賴:一個父RDD的partition至多被子RDD的某個partition使用一次沒shuffer pipline丟一個就直接拿出來計算就可以 窄依賴:一個父RDD的parttiton會被子RDD的partitio使用多次有shuffer 寬依賴掛掉了要從父RDD全部計算 有的時候解決數據傾斜需要shuffer 他們容錯程度不一樣的 有shuffer就會生成stage 總結:老子被兒子用幾次,多個孩子(寬)或單個孩子(窄)
2.driver
driver就是main方法中創建sparkcontext action產生job,shuffer產生stage,stage里是task
總結
以上是生活随笔為你收集整理的怎么解析spark的宽窄依赖和持久化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go语言第一个程序-hello worl
- 下一篇: 各种分布(distribution)