出口貿(mào)易網(wǎng)站廣告營銷的經(jīng)典案例
分析&回答
- user actions 可以看作是事件流(普通流)
- patterns 為廣播流,把全量數(shù)據(jù)加載到不同的計算節(jié)點。
廣播流
- Broadcast是一份存儲在TaskManager內(nèi)存中的只讀的緩存數(shù)據(jù)
- 在執(zhí)行job的過程中需要反復使用的數(shù)據(jù),為了達到數(shù)據(jù)共享,減少運行時內(nèi)存消耗,我們就用廣播變量進行廣播
廣播流好處
- 從clinet端將一份需要反復使用的數(shù)據(jù)封裝到廣播變量中,分發(fā)到每個TaskManager的內(nèi)存中保存
- TaskManager中的所有Slot所管理的線程在執(zhí)行task的時候如果需要用到該變量就從TaskManager的內(nèi)存中讀取數(shù)據(jù),達到數(shù)據(jù)共享的效果,與Spark中的廣播變量效果時一樣
普通雙流join
根據(jù)join 條件,根據(jù)key的發(fā)到同一個計算節(jié)點,如下圖類似
反思&擴展
廣播流使用注意點:
- 廣播變量中封裝的數(shù)據(jù)集大小要適宜,太大,容易造成OOM
- 廣播變量中封裝的數(shù)據(jù)要求能夠序列化,否則不能在集群中進行傳輸
哪種 Join 可以滿足單個流斷流的時候仍然能夠保證正確的 Join 到數(shù)據(jù)?
廣播流Join
喵嗚面試助手:一站式解決面試問題,你可以搜索微信小程序 [喵嗚面試助手]?或關注 [喵嗚刷題] -> 面試助手?免費刷題。如有好的面試知識或技巧期待您的共享!