五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Flink的廣播變量是什么?詳細的操作步驟有哪些?

2023-07-20 16:07 作者:ingemar-  | 我要投稿

Flink支持廣播變量,就是將數(shù)據(jù)廣播到具體的taskmanager上,數(shù)據(jù)存儲在內(nèi)存中,這樣可以減緩大量的shuffle操作;

比如在數(shù)據(jù)join階段,不可避免的就是大量的shuffle操作,我們可以把其中一個dataSet廣播出去,一直加載到taskManager的內(nèi)存中,可以直接在內(nèi)存中拿數(shù)據(jù),避免了大量的shuffle,導致集群性能下降;

廣播變量創(chuàng)建后,它可以運行在集群中的任何function上,而不需要多次傳遞給集群節(jié)點。另外需要記住,不應該修改廣播變量,這樣才能確保每個節(jié)點獲取到的值都是一致的。

一句話解釋,可以理解為是一個公共的共享變量,我們可以把一個dataset 數(shù)據(jù)集廣播出去,然后不同的task在節(jié)點上都能夠獲取到,這個數(shù)據(jù)在每個節(jié)點上只會存在一份。如果不使用broadcast,則在每個節(jié)點中的每個task中都需要拷貝一份dataset數(shù)據(jù)集,比較浪費內(nèi)存(也就是一個節(jié)點中可能會存在多份dataset數(shù)據(jù))。

注意:因為廣播變量是要把dataset廣播到TaskManager節(jié)點內(nèi)存中,所以廣播的數(shù)據(jù)量不能太大,否則會出現(xiàn)OOM這樣的問題

Broadcast:Broadcast是通過withBroadcastSet(dataset,string)來注冊的

Access:通過getRuntimeContext().getBroadcastVariable(String)訪問廣播變量

  • 可以理解廣播就是一個公共的共享變量

  • 將一個數(shù)據(jù)集廣播后,不同的Task都可以在節(jié)點上獲取到

  • 每個節(jié)點 只存一份

  • 如果不使用廣播,每一個Task都會拷貝一份數(shù)據(jù)集,造成內(nèi)存資源浪費


用法


在需要使用廣播的操作后,使用?withBroadcastSet?創(chuàng)建廣播

在操作中,使用getRuntimeContext.getBroadcastVariable [廣播數(shù)據(jù)類型] ( 廣播名 )獲取廣播變量



示例


創(chuàng)建一個 學生 數(shù)據(jù)集,包含以下數(shù)據(jù)

將該數(shù)據(jù),發(fā)布到廣播。

再創(chuàng)建一個 成績 數(shù)據(jù)集,

請通過廣播獲取到學生姓名,將數(shù)據(jù)轉(zhuǎn)換為


步驟


1. 獲取批處理運行環(huán)境

2. 分別創(chuàng)建兩個數(shù)據(jù)集

3. 使用 RichMapFunction 對 成績 數(shù)據(jù)集進行map轉(zhuǎn)換

4. 在數(shù)據(jù)集調(diào)用 map 方法后,調(diào)用 withBroadcastSet 將 學生 數(shù)據(jù)集創(chuàng)建廣播

5. 實現(xiàn) RichMapFunction

  • 將成績數(shù)據(jù)(學生ID,學科,成績) -> (學生姓名,學科,成績)

  • 重寫 open 方法中,獲取廣播數(shù)據(jù)

  • 在 map 方法中使用廣播進行轉(zhuǎn)換

6. 打印測試



參考代碼


Flink的廣播變量是什么?詳細的操作步驟有哪些?的評論 (共 條)

分享到微博請遵守國家法律
罗源县| 岳普湖县| 通辽市| 织金县| 建德市| 内丘县| 卢龙县| 屏东市| 海兴县| 吉隆县| 敦煌市| 汝阳县| 庄浪县| 万安县| 株洲市| 宁陵县| 泰州市| 行唐县| 息烽县| 成武县| 佳木斯市| 榆树市| 察哈| 新宁县| 台州市| 河北省| 峨眉山市| 交口县| 楚雄市| 当雄县| 红河县| 桐梓县| 临澧县| 辰溪县| 葫芦岛市| 姚安县| 虎林市| 屏山县| 苏尼特右旗| 长沙县| 黄梅县|