Flink 累加器是什么?與廣播變量有什么區(qū)別?
Accumulator即累加器,與Mapreduce計(jì)數(shù)器的應(yīng)用差不多,可以很好地觀察任務(wù)在運(yùn)行期間的數(shù)據(jù)變化
但是可以在Flink job任務(wù)中的計(jì)算子函數(shù)中操作累加器,只能在任務(wù)執(zhí)行結(jié)束之后才能獲得累加器的最終結(jié)果。
Flink 現(xiàn)在有以下內(nèi)置累加器。每個(gè)累加器都實(shí)現(xiàn)了Accumulator接口。
內(nèi)部計(jì)數(shù)器
長(zhǎng)計(jì)數(shù)器
雙計(jì)數(shù)器
步驟
1.創(chuàng)建累加器
2.注冊(cè)累加器
3.使用累加器
4.獲得累加器的結(jié)果
參考代碼
未使用累加器:
使用累加器:
Flink 廣播和累加器的區(qū)別
Broadcast(廣播變量)允許程序員將一個(gè)串口的變量數(shù)據(jù)修改在每臺(tái)機(jī)器上,而不用在任務(wù)之間傳遞變量。廣播變量可以進(jìn)行共享,但不能進(jìn)行。
Accumulators(累加器)是可以在不同的任務(wù)中對(duì)同一個(gè)變量進(jìn)行累加操作(簡(jiǎn)單的說就是由Flink為我們實(shí)現(xiàn)線程安全)(對(duì)于循環(huán)系統(tǒng),增加累加的各個(gè)Task會(huì)跨Slot,甚至?xí)鐧C(jī)器進(jìn)行累加來說,所以,傳統(tǒng)的累加器不可用,需要用Flink提供的加器才可以的)。
