天天看點

Spark中的共享變量

Application:基于Spark的應用程式,包含了driver程式和 叢集上的executor

DriverProgram:運作main函數并且建立SparkContext的程式

ClusterManager:在叢集上擷取資源的外部服務(例如 standalone,Mesos,Yarn )

WorkerNode:叢集中任何可以運作應用用代碼的節點

Executor:是在一個workernode上為某應用用啟動的一個程序,該程序負責運作任務,并且負責将資料存在記憶體或者磁盤上。每個應用用都有各自自獨立的executors

Task:被送到某個executor上的執行單元

在Driver端定義:sc.longAccumulator

在算子内部進行累加

在Driver端彙總

累加器支援在所有不同節點之間進行累加計算

Spark中的共享變量

在Driver端廣播:sc.broadcast()

在算子内部取用,不能進行修改

廣播到每個Executor中

用完記得“銷毀”

将資料直接封裝到Executor中

如果直接将資料封裝task中,會産生很多副本,增加網絡傳輸的資料量,降低效率,因為task的數量遠大于Executor的數量

Spark中的共享變量