一次Hadoop開(kāi)發(fā)思路分享-創(chuàng)新互聯(lián)

困擾了自己1周的一個(gè)問(wèn)題終于得到解決了,感謝給我?guī)椭耐瑢W(xué),同時(shí)記錄下來(lái)分享給大家.

成都創(chuàng)新互聯(lián)長(zhǎng)期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為興寧企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作,興寧網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

問(wèn)題簡(jiǎn)化描述:

  • HDFS存在這樣格式的文件:用戶ID    主題ID    用戶對(duì)此主題的偏好分?jǐn)?shù)score。

  • 現(xiàn)在要求實(shí)現(xiàn)對(duì)給定的幾個(gè)主題T1,T2,T3,...TN,每個(gè)主題要求篩選出指定數(shù)量的用戶ID是M1,M2,M3,...MX。

  • 希望盡可能根據(jù)score來(lái)選出偏好的用戶ID,并且主題之間的用戶ID不可以重復(fù)。

  • 另外HDFS上distinct的用戶ID數(shù)量是大于等于M1+M2+M3+...+MX的。

思路分析:

問(wèn)題有幾個(gè)關(guān)鍵點(diǎn),第一,不重復(fù),第二,數(shù)量上要滿足,第三,偏好分?jǐn)?shù)score。

如何保證,主題之間的用戶不重復(fù)呢?

其實(shí)就是完成,一個(gè)用戶只能屬于一個(gè)主題的過(guò)程,當(dāng)然,我們可以很簡(jiǎn)單的對(duì)一個(gè)用戶下的所有偏好分?jǐn)?shù)進(jìn)行排序,取出最偏好的主題。

雖然這樣避免了重復(fù)的問(wèn)題,可是問(wèn)題來(lái)了,如果偏好主題T1要求的數(shù)量是100W,而僅僅只有90W的用戶ID對(duì)T1最偏好,這該如何補(bǔ)數(shù)呢?又如何通過(guò)程序來(lái)自動(dòng)化的實(shí)現(xiàn)這個(gè)過(guò)程呢?越想越復(fù)雜!

這個(gè)問(wèn)題好像有點(diǎn)類似于高考填自愿的問(wèn)題,我們每一個(gè)人會(huì)填寫(xiě)幾個(gè)志愿,但是我們終究只會(huì)被一個(gè)院校錄取,這是怎么做到的呢?是否可以從中借鑒呢?

首先,我們根據(jù)HDFS的內(nèi)容,寫(xiě)一個(gè)MapReduce完成一次計(jì)算,形成下面的用戶志愿HDFS內(nèi)容:

用戶ID  主題ID-A:score1;主題ID-B:score2;...

很簡(jiǎn)單,希望得到一個(gè)用戶ID下面按照score desc排序的主題列表,上面一行其實(shí)就是說(shuō):

用戶ID的第一志愿是主題A,第二志愿是主題B...。

------------------------------------------

接下來(lái),形成下面的一個(gè)列表list信息:

主題A  count-A

主題B  count-B

主題C  count-C

...

按照主題需要的用戶ID的數(shù)量進(jìn)行ASC排序。

------------------------------------------

下面,我們就來(lái)看如何進(jìn)行主題選擇用戶的過(guò)程:

我們首先選擇對(duì)數(shù)量要求最少的主題A完成下面的MapReduce計(jì)算:

一次Hadoop開(kāi)發(fā)思路分享

這樣,我們就完成了主題A的用戶篩選問(wèn)題。

接下來(lái),我們?nèi)〕鰈ist中數(shù)量要求比A多一點(diǎn)的主題B,那么它怎么取用戶呢?

很簡(jiǎn)單,我們只需要在MAP處理階段,傳遞主題A生成的結(jié)果HDFS路徑(路徑下面的文件內(nèi)容當(dāng)然是主題A的用戶)用于reduce階段取用戶時(shí)進(jìn)行過(guò)濾。

那么,主題C又如何取用戶呢?

類似的,只需要給MAP多傳遞主題A,主題B已經(jīng)占用的用戶信息用于過(guò)濾,其他處理操作不變!

其實(shí),我們可以發(fā)現(xiàn),上面的MapReduce其實(shí)可以是一個(gè)通用的程序,類似于COMMAND:

hadoop jar XXX.jar 主題ID 數(shù)量  [input1,input2,input3,...] 用戶志愿HDFS路徑 輸出路徑

其中input1,input2,input3,...是可選的,其實(shí)就是用于用戶過(guò)濾的。

最后,我們可以寫(xiě)一個(gè)Shell腳本,根據(jù)list的內(nèi)容來(lái)進(jìn)行重復(fù)調(diào)用上面的COMMAND,通過(guò)傳遞不同的參數(shù)信息達(dá)到目的,這樣我們就可以自動(dòng)化實(shí)現(xiàn)上面的要求了!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站題目:一次Hadoop開(kāi)發(fā)思路分享-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://bm7419.com/article44/dcojhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、企業(yè)網(wǎng)站制作網(wǎng)站維護(hù)、App開(kāi)發(fā)、自適應(yīng)網(wǎng)站、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)