Spark Accumulators

概述

Accumulator即累加器,與Mapreduce counter的應用場景差很少,都能很好地觀察task在運行期間的數據變化,Spark中的Accumulator各task能夠對Accumulator值進行累加,可是最終的返回值只能在Driver端獲取,同時原生支持Int和Double類型的Accumulator,也支持對Accumulator自定義類型及命名,以便咱們更好的對程序進行調優工具

Accumulator能解決哪些問題?

1.能精確地統計數據的各類屬性。例如能夠統計出符合user ID的記錄數,在一個時間段內產生了多少次購買,一般咱們在ETL使用Accumulator去統計出各類屬性的數據spa

2.輕量級的調試工具,能觀測到每一個task的信息。如經過Accumulator能夠在Spark UI觀測到每一個task所處理的記錄數,以下圖 調試

 

3.從集羣的資源利用率來精確的測量出Spark應用的資源利用率,如經過Accumulator能夠很以知道有多少的數據是來自HDFS,shuffle所處理的數據量如何以及RDD的從新計算次數,這些都是咱們Spark應用調優的有利信息orm

使用Accumulator的注意事項

在Action算子中更新Accumulator,Spark保證在每一個task對Accumulator只進行一次累加,即使是task重啓也是如此,但注意在若是Accumulator是在transformation算子進行累加的,那麼一旦task失敗或被重啓,則Accumulator會被累加屢次blog

相關文章
相關標籤/搜索