加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 查找所有用户的朋友:如何使用Hadoop Mapreduce实现?

发布时间:2020-12-15 04:16:00 所属栏目:Java 来源:网络整理
导读:说我输入如下: (1,2)(2,1)(1,3)(3,4)(4,1) 输出预计如下: (1,(2,3,4)) - (1,3) //second index is total friend #(2,(1,4)) - (2,3)(3,2)) - (3,2)(4,2)) - (4,2) 我知道如何在java中使用hashset执行此操作.但不知道这是如何使用mapreduce模型的.任何人都
说我输入如下:

(1,2)(2,1)(1,3)(3,4)(4,1)

输出预计如下:

(1,(2,3,4)) -> (1,3) //second index is total friend #
(2,(1,4)) -> (2,3)
(3,2))   -> (3,2)
(4,2))   -> (4,2)

我知道如何在java中使用hashset执行此操作.但不知道这是如何使用mapreduce模型的.任何人都可以就此问题抛出任何想法或示例代码吗?我会很感激.

————————————————– ———————————-

这是我天真的解决方案:1个映射器,2个减速器.
映射器将组织输入(1,2),1),3);

将输出组织为

*(1,HashSet的&LT 2 – ),HashSet的&LT 1为卤素),HashSet的&3; 1+),(3,HashSet的&LT 1为卤素;)*.

Reducer1:

将mapper的输出作为输入和输出:

*(1,hashset< 2,3>),hashset< 1>)和(2,hashset< 1>)*

Reducer2:

将reducer1的输出作为输入和输出:

*(1,1)和(2,1)*

这只是我天真的解决方案.我不确定这是否可以通过hadoop的代码完成.

解决方法

我认为应该有一个简单的方法来解决这个问题.

Mapper Input: (1,1)

只需为每对发出两条记录,如下所示:

Mapper Output/ Reducer Input:

Key => Value
1 => 2
2 => 1
2 => 1
1 => 2
1 => 3
3 => 1
3 => 2
2 => 3
2 => 4
4 => 2
4 => 1
1 => 1

在reducer方面,你会得到4个不同的组,如下所示:

Reducer Output:

Key => Values
1 => [2,4]
2 => [1,4]
3 => [1,2]
4 => [1,2]

现在,您可以根据需要格式化结果.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读