国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

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

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

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

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

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

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

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

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

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

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

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

  • 每個(gè)節(jié)點(diǎn) 只存一份

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


用法


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

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



示例


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

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

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

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


步驟


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

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

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

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

5. 實(shí)現(xiàn) RichMapFunction

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

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

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

6. 打印測試



參考代碼


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

分享到微博請遵守國家法律
瑞安市| 诸城市| 凉山| 金溪县| 清流县| 六安市| 蚌埠市| 西吉县| 安顺市| 黄梅县| 罗源县| 化德县| 喀什市| 富平县| 中方县| 诏安县| 顺义区| 张掖市| 洪江市| 沛县| 宾川县| 东明县| 武强县| 遂宁市| 扬中市| 白水县| 福建省| 西畴县| 宿迁市| 砀山县| 高唐县| 渭源县| 赣州市| 革吉县| 敖汉旗| 辉县市| 囊谦县| 五大连池市| 新乡县| 如皋市| 台前县|