使用過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 計算的時候共享這樣乙份資料,這樣就減少...