文/龐雙玉
商業(yè)銀行非常重要的一項業(yè)務(wù)就是零售業(yè)務(wù),銀行零售業(yè)務(wù)成既能夠提供為銀行提供穩(wěn)定的低成本的來源,又能對沖銀行其他業(yè)務(wù)的不穩(wěn)定性,同時又滿足了客戶的理財需求,銀行零售業(yè)務(wù)迅速成為新的業(yè)務(wù)增長點。銀行代銷各大基金公司推出的產(chǎn)品,針對差異化的客戶和客戶需求,發(fā)售不同風(fēng)險級別和不同收益區(qū)間段的產(chǎn)品。
銀行的產(chǎn)品研發(fā)部門能否針對當(dāng)前經(jīng)濟形勢和客戶存款狀況,結(jié)合基金公司發(fā)行的產(chǎn)品類型研發(fā)出適應(yīng)市場和客戶需求的產(chǎn)品,是整個銀行零售業(yè)務(wù)核心競爭力的來源。針對銀行海量的交易數(shù)據(jù),運用大數(shù)據(jù)框架,從交易數(shù)據(jù)中尋找規(guī)律和做出判斷,為銀行的產(chǎn)品引入決策提供支持,是一件有意義的事情。
本文討論在Hadoop大數(shù)據(jù)框架下,利用map/reduce機制,對交易數(shù)據(jù)進行分析,分析在銀行代銷的各大基金公司在某個歷史時間段的交易額,從交易金額數(shù)據(jù)中,判斷出客戶對基金公司的偏愛度。
銀行的數(shù)據(jù)庫系統(tǒng)中存儲有大量的客戶交易數(shù)據(jù),從交易數(shù)據(jù)中,提取出下列的字段組合,(交易基金公司,基金公司產(chǎn)品,交易金額)以C(Company)代表交易基金公司,以P(Product)代表產(chǎn)品名稱,以A(Amount)代表交易金額,字段組合為(C,P,A)。
在字段(C,P,A)中,有價值的字段是C和A,因為基金公司產(chǎn)品名稱不是關(guān)心的對象,所以,在map階段,去掉字段組合(C,P,A)中的P字段,以(C,A)作為reuduce的輸入字段。map/reduce完成對字段的統(tǒng)計和排序,整個統(tǒng)計和排序字段值的變化過程如圖1所示。
圖1:map/reduce處理數(shù)據(jù)模型
圖2:map/reducec處理流程圖
在圖1中,Cn代表基金公司ID,第n個基金公司,Pnn代表第n個基金公司的第n個產(chǎn)品名稱,ann代表第n個基金公司第n個產(chǎn)品的銷售金額,把(cn, pnn, ann)作為map/reduce的輸入。
在map階段,去掉字段組合中的pnn,因為某個基金公司的某個特定產(chǎn)品名稱不是我們關(guān)心的內(nèi)容,我們只關(guān)心,每個客戶對于某個特定基金公司的交易金額,去掉pnn字段后,字段組合只剩下(cn, ann)。
在shuff le階段,按照基金公司ID,進行分組排列字段(cn, ann),比如:
這樣,我們就得到了一個
在reduce階段完成對每個C下面的交易金額的累加,最后形成輸出結(jié)果,每個基金公司總的交易金額(Cn, An)。
整個數(shù)據(jù)模型的變換過程如下:
在Hadoop處理框架中,map/reduce作業(yè)處理流程如圖2所示。
(1)MapReduce首先將資源文件進行分解,分成多個Chunk,一個chunk大概64M,同時用fork將進程拷貝到集群內(nèi)其它機器上。
(2)集群中的JobTracer在TaskTracer中制定map和Reduce。
(3)被分配了Map作業(yè)的worker,開始讀取第1步分解好的Trunk,Map作業(yè)數(shù)量是由M決定的,和split一一對應(yīng);Map作業(yè)從輸入數(shù)據(jù)中抽取出鍵值對,每一個鍵值對都作為參數(shù)傳遞給map函數(shù),map函數(shù)產(chǎn)生的中間鍵值對被緩存在內(nèi)存中。
(4)緩存的中間鍵值對會被定期寫入本地磁盤,而且被分為R個區(qū),R的大小是由用戶定義的,將來每個區(qū)會對應(yīng)一個Reduce作業(yè);這些中間鍵值對的位置會被通報給master,master負(fù)責(zé)將信息轉(zhuǎn)發(fā)給Reduce worker。
(5)master通知分配了Reduce作業(yè)的worker它負(fù)責(zé)的分區(qū)在什么位置(肯定不止一個地方,每個Map作業(yè)產(chǎn)生的中間鍵值對都可能映射到所有R個不同分區(qū)),當(dāng)Reduce worker把所有它負(fù)責(zé)的中間鍵值對都讀過來后,先對它們進行排序,使得相同鍵的鍵值對聚集在一起。因為不同的鍵可能會映射到同一個分區(qū)也就是同一個Reduce作業(yè)(誰讓分區(qū)少呢),所以排序是必須的。
(6)reduce worker遍歷排序后的中間鍵值對,對于每個唯一的鍵,都將鍵與關(guān)聯(lián)的值傳遞給reduce函數(shù),reduce函數(shù)產(chǎn)生的輸出會添加到這個分區(qū)的輸出文件中。
(7)當(dāng)所有的Map和Reduce作業(yè)都完成了,master喚醒正版的user program,MapReduce函數(shù)調(diào)用返回user program的代碼。
利用Hadoop平臺的map/reduce流程對銀行交易數(shù)據(jù)的分析,從數(shù)據(jù)規(guī)模上,可以對海量數(shù)據(jù)進行分析,從分析結(jié)果上,在足夠大的客戶交易數(shù)據(jù)樣本上得出的每個基金公司的交易金額更能客觀的反映出客戶對該基金公司的偏愛度,從而為銀行引入產(chǎn)品提供決策支持。