我是MapReduce的新手,我正在开展一个项目来增加我的知识。 现在我必须在Hadoop中编写一个MapReduce程序,以便从一大块数据中找到共同的朋友。
输入文件的格式为
<User><TAB><Friends>
这是一个包含
等数据的文本文件0 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94
1 0,5,20,135,2409,8715,8932,10623,12347,12846,13840,13845,14005,20075,21556,22939,23520,28193,29724,29791,29826,30691,31232,31435,32317,32489,34394,35589,35605,35606,35613,35633,35648,35678,38737,43447,44846,44887,49226,49985,623,629,4999,6156,13912,14248,15190,17636,19217,20074,27536,29481,29726,29767,30257,33060,34250,34280,34392,34406,34418,34420,34439,34450,34651,45054,49592
2 0,117,135,1220,2755,12453,24539,24714,41456,45046,49927,6893,13795,16659,32828,41878
3 0,12,41,55,1532,12636,13185,27552,38737
4 0,8,14,15,18,27,72,80,15326,19068,19079,24596,42697,46126,74,77,33269,38792,38822
5 0,1,20,2022,22939,23527,30257,32503,35633,41457,43262,44846,49574,31140,32828
因此,1,2,3,4,5等表示标签,而在它们前面写的数字是他们的朋友。我要做的是:
<User><TAB><Recommendations>
我不知道从哪里开始。
答案 0 :(得分:0)
您是否尝试过这种方法:
一个。尝试创建k,列表对,其中k是显示为朋友的数字,v是用户。 例如:(1,&lt; 0,5&gt;),(20,&lt; 1,5&gt;),(5,&lt; 0&gt;) 这将是映射器的输出。
湾在reducer中,收集所有密钥。 并检查值的大小, 如果size(value)&gt; = 2 ==&gt;这把钥匙是共同的朋友。
℃。将此共同朋友推荐给其他朋友,即此密钥中的值除外。
d。以您需要的方式格式化输出。
这可能只是其中一种可能的解决方案...... 如果您认为任何其他解决方案更可行,请分享。