flink 廣播變數

2021-09-29 08:37:38 字數 864 閱讀 8413

使用過spark的人都知道廣播變數這個概念。廣播變數相當於乙個共享變數,將乙個小資料集複製分發到每個task,task直接從本地讀取。flink中有兩種廣播變數,一種靜態的廣播變數,一種實時動態的廣播變數。

靜態廣播變數示例:

使用場景如: 黑名單判斷,將黑名單廣播出去進行資料匹配。

public class flinkbroadcast2 

@override

public string map(integer integer) throws exception

}).withbroadcastset(ds1,"bs").print();

// env.execute();

}

動態廣播變數示例:

使用場景: 資料依賴某些動態變化的處理規則

廣播流一般都是從kafka或其他資料來源獲取,這裡演示直接固定了。從kafka獲取流,修改資料後,下游也會更新廣播流。

key streaming 使用keyedbroadcastprocessfunction.

非key streaming 使用broadcastprocessfunction.

public class flinkbroadcast 

@override

public void processbroadcastelement(integer integer, context context, collectorcollector) throws exception

}).print();

env.execute();

}}

flink實戰 廣播狀態的使用

broadcast state 是 flink 1.5 引入的新特性。在開發過程中,如果遇到需要下發 廣播配置 規則等低吞吐事件流到下游所有 task 時,就可以使用 broadcast state 特性。下游的 task 接收這些配置 規則並儲存為 broadcaststate,將這些配置應用到另...

Flink實操 廣播變數 累加器 分布式快取

三 累加器 四 分布式快取 flink支援廣播。可以將資料廣播到taskmanager上,資料儲存到記憶體中。資料儲存在記憶體中,這樣可以減緩大量的shuffle操作 比如在資料join階段,不可避免的就是大量的shuffle操作,我們可以把其中乙個datastream廣播出去,一直載入到taskm...

Spark的廣播變數

將每個task都要計算的資料設定成廣播變數,如果不設定成廣播變數,則每個 task 都會儲存乙份這樣一模一樣的資料,這樣就占用了很多的儲存空間,將共享變數設定成廣播變數後只在乙個 excuter 裡面儲存這樣乙份 共享資料,這個 excuter 裡面的task 計算的時候共享這樣乙份資料,這樣就減少...