天天看點

spark共享變量:累加器與廣播變量

  • 累加器

       累加器提供了将工作節點中的值聚合到驅動器程式中的簡單文法。累加器一個常見用途是,在調試時對作業執行過程中的事件進行計數。

       執行行動操作後,累加器的值才會更新;

       累加器的值隻有在驅動程式才能通路,從工作節點上任務的角度看,累加器隻是一個隻寫變量。在這種模式下,累加器的實作可以更加高效,不需要對每次更新操作進行複雜的通信。

  • 廣播變量

       廣播變量可以讓程式高效地向所有工作節點發送一個較大的隻讀值,以供一個或多個spark操作使用。比如,如果你的應用需要向所有節點發送一個較大的隻讀查詢表,或者是機器學習算法中的一個很大的特征向量,廣播變量是一種很好的處理方式。

       Spark會自動把閉包中所有引用到的變量發送到工作節點上,但是很低效,原因有二:首先,預設的任務發射機制是專門為小任務進行優化的;其次,在多個并行操作中使用同一個變量,spark會為每個操作分别發送。而廣播變量會将變量隻發送一次到各個節點,使用的是一種高效的類似BitTorrent的通信機制。

繼續閱讀