国产亚洲精品久久久久久久软件,久久久久免费少妇高潮a,国产精品亚洲毛片完整版,视频二区三区国产情侣在线

首頁
產(chǎn)品
方案
案例
關(guān)于我們
永洪社區(qū)
申請試用

一文讀懂大數(shù)據(jù)量組合數(shù)據(jù)集在永洪的應(yīng)用實例

作者: 永洪BI??來源: 永洪科技??時間:2020年01月07日

我們知道數(shù)據(jù)分析的第一步是準(zhǔn)備數(shù)據(jù),所以在前面的課程里,我們介紹了元數(shù)據(jù)(Yonghong BI課程系列之概念:元數(shù)據(jù)),今天這篇文章,主要介紹大數(shù)據(jù)量組合數(shù)據(jù)集在永洪中的應(yīng)用實例:Mapsidejoin。

什么是Mapsidejoin?按照字面意思,Mapsidejoin就是M—節(jié)點—組合 。在了解Mapsidejoin之前,首先我們要了解一下MapReduce模型以及產(chǎn)品的四個節(jié)點CNMR的作用,通過MapReduce模型中,Mapsidejoin和Reducesidejoin的對比,了解在大數(shù)據(jù)量數(shù)據(jù)集進行組合時,Mapsidejoin的優(yōu)點。


Yonghong中集群節(jié)點介紹

Client Node —C節(jié)點是客戶端訪問節(jié)點,客戶通過訪問C節(jié)點來提交任務(wù)。

Naming Node —N節(jié)點相當(dāng)于集群的大腦,除了監(jiān)控集群其他節(jié)點外,還要收集客戶通過C節(jié)點提交的任務(wù)進行分配等等。

Map Node — M節(jié)點是存儲數(shù)據(jù)文件的節(jié)點

Reduce Node —R節(jié)點是用來做匯總計算的計算


MapReduce模型介紹

百度百科對MapReduce的定義感覺還是比較全面的,簡單的概括一下:MapReduce是一個基于集群的計算平臺,是一個簡化分布式編程的計算框架,是一個將分布式計算抽象為Map和Reduce兩個階段的編程模型。而Yonghong在進行組合數(shù)據(jù)集計算時用到的就是MapReduce模型。

適用場景:多M節(jié)點的分布式集群,大數(shù)據(jù)量數(shù)據(jù)的組合包括大表join小表,大表join大表。

1、為什么要使用Mapsidejoin

在MapReduce模型中,對于組合計算可以分為Map-side-join 和Reduce-side-join兩種,下面用一個例子簡單介紹一下:

假設(shè)我們有兩張表:表1人員表為大表,表2地區(qū)表為小表,如下圖所示: 

我們想通過id把表1的name和表2的Address連接起來 ,那么就需要以id為連接列,做inner join, 連接對應(yīng)的id為id=1,id=2,id=3,id=4。

假如現(xiàn)在我們的集群里面有Map1和Map2兩個Map節(jié)點,那么當(dāng)我們將表1和表2入集市以后,經(jīng)過數(shù)據(jù)的拆分存儲,我們可能會出現(xiàn)以下情況:

? 情況1:可以進行Mapsidejoin

如上圖所示,經(jīng)過拆分后的表1和表2,連接列id=1-4 對應(yīng)的數(shù)據(jù)存放在了同一個節(jié)點,在join時,Map節(jié)點會檢測連接列數(shù)據(jù)是否已經(jīng)完成對應(yīng),如果此時數(shù)據(jù)對應(yīng)后就可以在Map節(jié)點上進行join,Map節(jié)點將join后的結(jié)果發(fā)送給Reduce節(jié)點,Reduce節(jié)點將結(jié)果進行匯總計算就可以了。

? 情況2:不能進行Mapsidejoin時會進行Reducesidejoin

上圖所示, 經(jīng)過拆分存儲后的數(shù)據(jù)顯示表1的id1,2存放在了Map1節(jié)點;而表2的id1,2 存放在了Map2 節(jié)點上面;這個時候在join時Map節(jié)點檢測到對應(yīng)的數(shù)據(jù)不在同一個節(jié)點上,就會將所有的數(shù)據(jù)拿到Reduce節(jié)點重新進行全量的join。

以上兩種情況簡單的說明了Mapsidejoin 和 Reducesidejoin。

2、Mapsidejoin和Reducesidejoin的優(yōu)點
  • Map端join的好處是可以提前過濾掉join中需要排除的大量數(shù)據(jù),會減少數(shù)據(jù)的傳輸,因此Mapsidejoin 適用于大數(shù)據(jù)量join的場景。

  • Reduce端做join優(yōu)點是比較靈活,缺點是需要做大量數(shù)據(jù)傳輸和整個join過程都比較耗時,因此Reducesidejoin適用于小數(shù)據(jù)量的場景。

此外, 由于當(dāng)數(shù)據(jù)量巨大時,做join是非常消耗資源的,對于非Mapsidejoin的形式,無論是直連數(shù)據(jù)庫壓到數(shù)據(jù)庫做join,還是數(shù)據(jù)集市的形式去做Reducesidejoin,都會對節(jié)點造成極大壓力,容易造成產(chǎn)品很卡的情況,再嚴重就會造成OOM,宕機等。所以我們需要使用Mapsidejoin來規(guī)避這種場景, 當(dāng)數(shù)據(jù)量大的時候,我們可以部署多個M節(jié)點,通過將數(shù)據(jù)先導(dǎo)入集市,存放在集群中的多個M節(jié)點,然后在M節(jié)點上面進行計算來實現(xiàn)Mapsidejoin,這樣能把C,R節(jié)點的壓力平均分到M節(jié)點上面,解決大數(shù)據(jù)量join可能帶來的使用壓力,讓資源的利用更加高效。

那么我們怎么實現(xiàn)Mapsidejoin呢 ?如何保證數(shù)據(jù)經(jīng)過拆分后,連接列對應(yīng)的數(shù)據(jù)一定存放在同一個Map節(jié)點上面呢?下面介紹永洪Mapsidejoin的兩種實現(xiàn)方式。


永洪Mapsidejoin的兩種形式

事實表——維度表

適用場景(大表join小表)

在分布式系統(tǒng)中,當(dāng)有星形數(shù)據(jù)(一個大表,若干個小表)需要join的時候,可以將小表的數(shù)據(jù)復(fù)制到每個Map節(jié)點,執(zhí)行Mapsidejoin, 而無須到Reduce節(jié)點進行連接操作,從而提升表連接的效率。

在MPP集市中,我們將大表以普通的增量導(dǎo)入形式入集市,將所有小表在增量導(dǎo)入時勾選維度表的形式,如下圖所示:

此時勾選維度表的小表會全量生成在每一個Map節(jié)點。

以上面表1人員表,表2地區(qū)表的為例:表1增量導(dǎo)入正常拆分,表2以增量導(dǎo)入維度表形式入集市。

如圖所示,此時在每一個M節(jié)點上,因為表2全量存儲,所以表1和表2對應(yīng)的id數(shù)據(jù)就一定能在同一個M節(jié)點找到。

但是事實表——維度表的形式也有局限性,比如兩個以上的大表做join時,就需要將其中的一個或多個大表,存放到每一個M節(jié)點上,大數(shù)據(jù)量的大表進行維度表存儲本來就會加大資源消耗,而且大表作為維度表,無法壓到內(nèi)存中進行計算,因此無法使用Mapsidejoin。

所以針對這種情況,我們采取分片列來支持大表join大表的使用場景。

分片列         

適用場景(大表join大表)

在8.5.1版本之前,我們只能用維度表join事實表的形式去做Mapsidejoin,在一些用戶場景中,無法提前進行數(shù)據(jù)表關(guān)聯(lián)做成寬表模型入集市,同時也不滿足Mapsidejoin(或broadcast join)計算的要求,因此需要在集市中做分布式j(luò)oin的計算支持。

具體場景有:

1)業(yè)務(wù)上需要,比如:部分匯總后再進行關(guān)聯(lián),某時間段內(nèi)產(chǎn)品銷售額大于特定值時的產(chǎn)品報修批次分布;特定值進行關(guān)聯(lián),選擇某個時間段里面最后出現(xiàn)的數(shù)據(jù)和另外的表關(guān)聯(lián);自關(guān)聯(lián),本月數(shù)據(jù)和上月數(shù)據(jù)關(guān)聯(lián)計算等等;這些場景下(一般是雪花模型或更復(fù)雜)如果提前join會導(dǎo)致數(shù)據(jù)膨脹,從而產(chǎn)生非常多的冗余數(shù)據(jù),但實際使用時因為有過濾條件則不會產(chǎn)生太多數(shù)據(jù);

2)數(shù)據(jù)量較大的事實表需要頻繁增量更新,且全量數(shù)據(jù)join成寬表入集市的時間開銷太大;

3)自服務(wù)場景下,是否要關(guān)聯(lián)表,以及關(guān)聯(lián)什么字段存在不確定性,需要保留原始細節(jié)表來進行自助查詢。

分片列的Mapsidejoin實現(xiàn)邏輯其實和上面情況1的圖片類似。

我們通過增量導(dǎo)入分片列的形式將表1和表2的關(guān)聯(lián)列使用hash算法,保證兩張表的id對應(yīng)的數(shù)據(jù)經(jīng)過拆分后一定會存儲在同一個Map節(jié)點上面,這樣經(jīng)過拆分的大表就可以壓到內(nèi)存中計算。

操作步驟:

1、將需要組合的大表以增量導(dǎo)入的形式入集市,同時需要勾選分片列屬性,選擇分片列為鏈接列。比如表1在增量導(dǎo)入集市時要勾選分片列為id ,表2也需要同樣的操作。

2、將生成的數(shù)據(jù)集市數(shù)據(jù)集進行組合,Map節(jié)點在檢測數(shù)據(jù)時會自動使用Mapsidejoin形式連接。

小結(jié)

一定要記住使用Mapsidejoin的前提是分布式集群多M節(jié)點且大數(shù)據(jù)量數(shù)據(jù)集市的數(shù)據(jù)集做join。

最后我們用一張圖片來簡單的回顧一下Mapsidejoin的兩種形式。

大表jion大表用分片列

大表join小表用事實表——維度表

 

版權(quán)聲明

?

久久热在线这里只有精品| 欧美日韩国产一区日韩欧美| 精品视频一区二区三区不卡| 九九热久久精品免费视频| 激情av毛片在线免费看| 欧美成人精品欧美一级黄片| 久久久中文字幕免费视频| 乱操欧美老阿姨| 虎白女粉嫩粉嫩18视频| 女生操男人网站| 国产第一页免费浮力影院| 国产明星视频三级a三级点| 中文字幕av日韩精品一区| 一进一出操逼动态小视频| 久久久久久黄色一级大片| 东京热av中文字幕久久| 91porny九色av| 精品樱空桃一区二区三区| 色先锋影音岛国av资源| 欧洲女生十四个喷液视频| 久久无码中文字幕久久无| 91欧美一区二区三区成人| 亚洲成年av男人的天堂| 女生小穴流水视频免费看| 肏女生的视频在线免费看| 羽月希最新一本一道在线| 精品无码久久VAa国产| 中文字幕日本六区小电影| 美女扣逼污视频软件网站| 久久人人玩人人妻做人人| 国产精品免费夜夜嗨av| 99亚洲精品一区二区三区| 制服美女自插下体一区二区| 999精品国产只有精品| 亚洲风情亚aⅴ在线发布| 日本电影一区二区三区四区| 韩国年轻漂亮岳每4乱理| 大鸡巴操死我了好爽视频| 一区二区中文字幕日本韩国| 牛鞭进入女人下身的视频| 精品成人免费播放国产片|