如何使用mapreduce从文本文件中查找互号?

8zzbczxx  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(467)

我是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,等等意味着标签,而写在他们前面的数字是他们的朋友。我要做的是:
从这些数据中提供共同的朋友推荐
只有一个mapreduce作业可以解决此问题。
输出格式应为 <User><TAB><Recommendations> 我不知道从哪里开始。

4dbbbstv

4dbbbstv1#

您是否尝试过这种方法:
答。尝试创建k,列表对,其中k是显示为朋友的号码,v是用户。例如:(1,<0,5>),(20,<1,5>),(5,<0,1>)这将是Map器的输出。
b。在减速器中,收集所有钥匙。并检查值的大小,如果大小(value)>=2==>这个键是一个共同的朋友。
c。向其他朋友推荐这个共同的朋友,即除了这个键中的值。
d。以您需要的方式格式化输出。
这可能只是可能的解决方案之一。。。如果你认为其他的解决方案更可行,请分享。

相关问题