天天看點

MapReduce業務 - 圖檔關聯計算1.概述2.業務背景3.編碼實踐4.截圖預覽5.總結6.結束語

  最近在和人交流時談到資料相似度和資料共性問題,而剛好在業務層面有類似的需求,今天和大家分享這類問題的解決思路,分享目錄如下所示:

業務背景

編碼實踐

預覽截圖

  下面開始今天的内容分享。

  目前有這樣一個背景,在一大堆資料中,裡面存放着圖檔的相關資訊,如下圖所示:

MapReduce業務 - 圖檔關聯計算1.概述2.業務背景3.編碼實踐4.截圖預覽5.總結6.結束語

  上圖隻是給大家列舉的一個示例資料格式,第一清單示自身圖檔,第二、第三......等清單示與第一列相關聯的圖檔資訊。那麼我們從這堆資料中如何找出他們擁有相同圖檔資訊的圖檔。

  那麼,我們在明确了上述需求後,下面我們來分析它的實作思路。首先,我們通過上圖所要實作的目标結果,其最終計算結果如下所示:

  結果如上所示,找出兩兩圖檔之間的共性圖檔,結果未列完整,隻是列舉了部分,具體結果大家可以參考截圖預覽的相關資訊。

  下面給大家介紹解決思路,通過觀察資料,我們可以發現在上述資料當中,我們要計算圖檔兩兩的共性圖檔,可以從關聯圖檔入手,在關聯圖檔中我們可

以找到共性圖檔的關聯資訊,比如:我們要計算pic001pic002圖檔的共性圖檔,我們可以在關聯圖檔中找到兩者(pic001pic002組合)後

對應的自身圖檔(key),最後在将所有的key求并集即為兩者的共性圖檔資訊,具體資訊如下圖所示:

MapReduce業務 - 圖檔關聯計算1.概述2.業務背景3.編碼實踐4.截圖預覽5.總結6.結束語

  通過上圖,我們可以知道具體的實作思路,步驟如下所示:

第一步:拆分資料,關聯資料兩兩組合作為key輸出。

第二步:将相同key分組,然後求并集得到計算結果。

  這裡使用一個mr來完成此項工作,在明白了實作思路後,我們接下來去實作對應的編碼。

拆分資料,兩兩組合。

按key分組,求并集

完整示例

  關于計算結果,如下圖所示:

MapReduce業務 - 圖檔關聯計算1.概述2.業務背景3.編碼實踐4.截圖預覽5.總結6.結束語

  本篇部落格隻是從思路上實作了圖檔關聯計算,在資料量大的情況下,是有待優化的,這裡就不多做贅述了,後續有時間在為大家分析其中的細節。

  這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行讨論或發送郵件給我,我會盡我所能為您解答,與君共勉!

繼續閱讀