最近在和人交流時談到資料相似度和資料共性問題,而剛好在業務層面有類似的需求,今天和大家分享這類問題的解決思路,分享目錄如下所示:
業務背景
編碼實踐
預覽截圖
下面開始今天的内容分享。
目前有這樣一個背景,在一大堆資料中,裡面存放着圖檔的相關資訊,如下圖所示:
上圖隻是給大家列舉的一個示例資料格式,第一清單示自身圖檔,第二、第三......等清單示與第一列相關聯的圖檔資訊。那麼我們從這堆資料中如何找出他們擁有相同圖檔資訊的圖檔。
那麼,我們在明确了上述需求後,下面我們來分析它的實作思路。首先,我們通過上圖所要實作的目标結果,其最終計算結果如下所示:
結果如上所示,找出兩兩圖檔之間的共性圖檔,結果未列完整,隻是列舉了部分,具體結果大家可以參考截圖預覽的相關資訊。
下面給大家介紹解決思路,通過觀察資料,我們可以發現在上述資料當中,我們要計算圖檔兩兩的共性圖檔,可以從關聯圖檔入手,在關聯圖檔中我們可
以找到共性圖檔的關聯資訊,比如:我們要計算pic001pic002圖檔的共性圖檔,我們可以在關聯圖檔中找到兩者(pic001pic002組合)後
對應的自身圖檔(key),最後在将所有的key求并集即為兩者的共性圖檔資訊,具體資訊如下圖所示:
通過上圖,我們可以知道具體的實作思路,步驟如下所示:
第一步:拆分資料,關聯資料兩兩組合作為key輸出。
第二步:将相同key分組,然後求并集得到計算結果。
這裡使用一個mr來完成此項工作,在明白了實作思路後,我們接下來去實作對應的編碼。
拆分資料,兩兩組合。
按key分組,求并集
完整示例
關于計算結果,如下圖所示:
本篇部落格隻是從思路上實作了圖檔關聯計算,在資料量大的情況下,是有待優化的,這裡就不多做贅述了,後續有時間在為大家分析其中的細節。
這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行讨論或發送郵件給我,我會盡我所能為您解答,與君共勉!