用MapReduce做相似度分析
Q:
有一批數據(10億量級),數據內容包括:
列 | 類型 |
id | INT |
content | String |
content為一個句子
列之間以\t分割
like:
1 “互聯網夠公司的日志無處不在,web日志,js日志,搜索日志,監控日志等等”
2 "對于這些日志的離線分析(Hadoop),wget&rsync雖然人力維護成本較高,但可以滿足功能行需求。但對于這些日志的實時分析需求(例如實時推薦,監控系統),則往往必須要引入一些“高大上”的系統"
計算每行數據的content和其他數據content的相似度
A:
兩輪MapReduce:第一輪:
按照一定規則分割content,并以分割后的content內容為key,value為id,reduce階段對value做排序后兩兩輸出,實例如下:
原始數據:
10 X
20 Y
30 Z
假設X可以分割為A、B、C, Y可以分割為A、C、D, Z可以分割為A、D
則第一輪mapper的輸出為:
<A,10>
<B,10>
<C,10>
<A,20>
<C,20>
<D,20>
<A,30>
<D,30>
使用分割后的content做key
reducer的輸入為:
A {10,20,30}
B {10}
C {10,20}
D {10}
reduce計算邏輯:對value組按大小排序,排序后按序兩兩輸出,組大小為1的不輸出
reducer輸出為
10,20 ----from A {10,20,30}
10,30 ----from A {10,20,30}
20,30 ----from A {10,20,30}
10,20 ----from C {10,20}
第二輪map-reduce:
對第一輪輸出的數據做聚合,value為出現次數
10,20 2
10,30 1
20,30 1
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!