當前位置:網站首頁>Spark累加器和廣播變量
Spark累加器和廣播變量
2022-06-24 06:59:48【Angryshark_128】
累加器
累加器有些類似Redis的計數器,但要比計數器强大,不僅可以用於計數,還可以用來累加求和、累加合並元素等。
假設我們有一個word.txt文本,我們想要統計該文本中單詞“sheep”的行數,我們可以直接讀取文本filter過濾然後計數。
sc.textFile("word.txt").filter(_.contains("sheep")).count()
假設我們想分別統計文本中單詞"sheep""wolf"的行數,如果按照上述方法需要計算兩次
sc.textFile("word.txt").filter(_.contains("sheep")).count()
sc.textFile("word.txt").filter(_.contains("wolf")).count()
如果要分別統計100個單詞的行數,則要計算100次
如果使用累加器,則只需要讀一次即可
val count1=sc.acccumlator(0)
val count2=sc.acccumlator(0)
...
def processLine(line:String):Unit{
if(line.contains("sheep")){
count1+=1
}
if(line.contains("wolf")){
count2+=1
}
...
}
sc.textFile("word.txt").foreach(processLine(_))
不僅Int類型可以累加,Long、Double、Collection也可以累加,還可以進行自定義,而且這個變量可以在Spark的WebUI界面看到。
注意:累加器只能在Driver端定義和讀取,不能在Executor端讀取。
廣播變量
廣播變量允許緩存一個只讀的變量在每臺機器(worker)上面,而不是每個任務(task)保存一份備份。利用廣播變量能够以一種更有效率的方式將一個大數據量輸入集合的副本分配給每個節點。
廣播變量通過兩個方面提高數據共享效率:
(1)集群中每個節點(物理機器)只有一個副本,默認的閉包是每個任務一個副本;
(2)廣播傳輸是通過BT下載模式實現的,也就是P2P下載,在集群多的情况下,可以極大地提高數據傳輸速率。廣播變量修改後,不會反饋到其他節點。
val list=sc.parallize(0 to 10)
val brdList=sc.broadcast(list)
sc.textFile("test.txt").filter(brdList.value.contains(_.toInt)).foreach(println)
使用時,需注意:
(1)適用於小變量分發,對於動則幾十M的變量,每個任務都發送一次既消耗內存,也浪費時間
(2)廣播變量只能在driver端定義,在Executor端讀取,Executor不能修改
版權聲明
本文為[Angryshark_128]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/175/202206240050384857.html
邊欄推薦
猜你喜歡
隨機推薦
- 你真的理解LDO的輸出電容嗎!?
- 二維激光SLAM( 使用Laser Scan Matcher )
- MySQL使用ReplicationConnection導致的連接失效分析與解决
- Go寫文件的權限 WriteFile(filename, data, 0644)?
- 在線文本過濾小於指定長度工具
- quartus調用&設計D觸發器——仿真&時序波驗證
- 【深入理解TcaplusDB技術】TcaplusDB構造數據
- 等保備案是什麼意思?應該去哪裏辦理備案?
- 建議自查!MySQL驅動Bug引發的事務不回滾問題,也許你正面臨該風險!
- 百萬獎金等你來拿,首届中國元宇宙創新應用大賽聯合創業黑馬火熱招募中!
- 力扣解法匯總513-找樹左下角的值
- 快速排序的簡單理解
- 139. 單詞拆分
- Web篇_01 了解web開發
- ADB 按鍵名、按鍵代碼數字、按鍵說明對照錶
- leetcode:面試題 08.13. 堆箱子【自頂而下的dfs + memory or 自底而上的排序 + dp】
- 解答02:Smith圓為什麼能“上感下容 左串右並”?
- MySQL的 安裝、配置、卸載
- 【ESP8266-01s】獲取天氣,城市,北京時間
- Redis 集群
- 【華中科技大學】考研初試複試資料分享
- 傑理之串口設置好以後打印亂碼,內部晶振沒有校准【篇】
- 【NOI2014】15.起床困難綜合症【二進制】
- 函數的定義和函數的參數
- JDBC 在性能測試中的應用
- 35歲危機?內卷成程序員代名詞了…
- SQL聯合查詢(內聯、左聯、右聯、全聯)的語法
- Outlook開機自啟+關閉時最小化
- 北大、加州伯克利大學等聯合| Domain-Adaptive Text Classification with Structured Knowledge from Unlabeled Data(基於未標記數據的結構化知識的領域自適應文本分類)
- 為什麼你的數據圖譜分析圖上只顯示一個值?
- sql server常用sql
- MySQL事務隔離
- STM32-------外部中斷
- 2022年信息安全工程師考試知識點:訪問控制
- 高仿書旗小說 Flutter 版,學起來
- 工作中一些常用的工具函數
- docker 部署redis
- 如何利用數倉創建時序錶
- version `ZLIB_1.2.9‘ not found (required by /lib64/libpng16.so.16)
- 【Flutter】如何使用Flutter包和插件