spark中的廣播變數和累加器

2021-09-10 17:01:19 字數 1685 閱讀 7080

目錄

一、前述

二、具體原理

1、廣播變數

2、累加器

spark中因為運算元中的真正邏輯是傳送到executor中去執行的,所以當executor中需要引用外部變數時,需要使用廣播變數。

累機器相當於統籌大變數,常用於計數,統計。

1、能不能將乙個rdd使用廣播變數廣播出去?

不能,因為rdd是不儲存資料的。可以將rdd的結果廣播出去。

2、 廣播變數只能在driver端定義,不能在executor端定義。

3、 在driver端可以修改廣播變數的值,在executor端無法修改廣播變數的值。

4、如果executor端用到了driver的變數,如果不使用廣播變數在executor有多少task就有多少driver端的變數副本。

5、如果executor端用到了driver的變數,如果使用廣播變數在每個executor中只有乙份driver端的變數副本。

scala **如下:

import org.apache.spark.

object accumulatoroperator }

println(accumulator.value)

sc.stop()

}}

Spark累加器和廣播變數

累加器有些類似redis的計數器,但要比計數器強大,不僅可以用於計數,還可以用來累加求和 累加合併元素等。假設我們有乙個word.txt文字,我們想要統計該文字中單詞 sheep 的行數,我們可以直接讀取文字filter過濾然後計數。sc.textfile word.txt filter conta...

spark的廣播變數和累加器

廣播變數 廣播變數允許開發人員在每個節點快取唯讀的變數,而不是在任務之間傳遞這些變數。例如,使用廣播變數能夠高效地 在集群每個節點建立大資料的副本。同時,spark還使用高效的廣播演算法分發這些變數,從而減少通訊的開銷。spark應用程式作業的執行由一系列排程階段構成,而這些排程階段通過shuffl...

spark之累加器和廣播變數

spark的三大資料結構 rdd 分布式資料集 廣播變數 分布式唯讀共享變數 累加器 分布式只寫共享變數 1.累加器 預設累加器 例子 對乙個list中的所有值進行相加 首先上圖中紅色部分框出來的 看上去邏輯沒有什麼大問題,但是輸出的結果sum 0。這是因為,sum在driver中被定義,在不同的e...