好友列表:

A:B,C,D,F,E,O
B:A,C,E,K
C:F,A,D,I
D:A,E,F,L
E:B,C,D,M,L
F:A,B,C,D,E,O,M
G:A,C,D,E,F
H:A,C,D,E,O
I:A,O
J:B,O
K:A,C,D
L:D,E,F
M:E,F,G
O:A,H,I,J

分析A里面好友有B,而B里面好友有A,那么A跟B就是互为好友。

我们的Map过程:
将好友列表文件的每一行数据都进行提取出来,提取成好友:

A:B,C,D,F,E,O

经过Map就变成:

<A-B,NULL>
<A-C,NULL>
<A-D,NULL>
<A-F,NULL>
<A-E,NULL>
<A-O,NULL>
B:A,C,E,K

经过Map就变成

<A-B.NULL>
<B-C,NULL>
<B-E,NULL>
<B-K,NULL>
static class EachFanMapper extends Mapper<LongWritable, Text, Text, NullWritable> {Text k = new Text();@Overrideprotected void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException {String line = value.toString();String user = line.split(":")[0];String[] friends = line.split(":")[1].split(",");for(int i = 0; i < friends.length; i++) {String friend = friends[i];/*** 下面这个过程就是关键的过程,* 第一行数据 : A:B,C,D,F,E,O* 第二行数据  :B:A,C,E,K* A里面有B,B里面有A* 现在我们需要获取这两个* 那么我们在map的时候, user 跟 friend 进行组合往reduce输出的时候,* 我们组合的时候需要进行排序,  * 第一行数据组合  A-B* 第二行如果没有排序 那么就是  B-A* 但是我们在reduce进行处理时,需要的是相同的key* 那么我们应该让 A-B  与  B-A 变成同一个key往reduce输出* 这样reduce才能根据相同的key进行数量的统计* 当数量为2时,就代表,A-B出现了两次,那么这一对手机互相关注的。*/if(user.compareTo(friend) < 0) {k.set(user + "-" + friend);context.write(k, NullWritable.get());} else {k.set(friend + "-" + user);context.write(k, NullWritable.get());}}}}

reduce

static class EachFanReducer extends Reducer<Text, NullWritable, Text, NullWritable> {@Overrideprotected void reduce(Text key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {int count = 0;for(NullWritable nw : values) {count++;}/*** 严格来说,这个count要么为1 要么为 2,当为2的时候,就说明是互粉*/if(count == 2) {context.write(key, NullWritable.get());}}}

代码
https://gitee.com/tanghongping/hadoopMapReduce/tree/master/src/com/thp/bigdata/eachFan

求好友中互粉的好友对相关推荐

  1. python+beautifulsoup/xpath实现新浪微博某互粉好友全部好友圈微博爬虫

    主要是懒,想要翻刚刚互粉的好友的全部好友圈微博,然而懒得一个一个去翻,就做了这个. 所谓一切机械性重复工作都可以交给计算机去做,就是我了我这种懒人而生的吧--

  2. Python-图-如何找出社交网络中的三度好友关系

    羁绊前行的,不是肆虐的狂风,而是内心的迷茫.-王争. 最近有些偷懒,距离上次更新也有两个星期了,原因我也很清楚,就是又开始有些迷茫了,购买了不少课程,仍不能减轻内心的焦虑.焦虑的原因还是想得太多,做得 ...

  3. MapReduce案例5——求互粉好友对

    题目: A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I D:A,E,F,L E:B,C,D,M,L F:A,B,C,D,E,O,M G:A,C,D,E,F H:A,C,D,E,O ...

  4. MapReduce—案例(六)求互粉好友对

    题目: A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I D:A,E,F,L E:B,C,D,M,L F:A,B,C,D,E,O,M G:A,C,D,E,F H:A,C,D,E,O ...

  5. C# 使用Redis实现粉丝好友互粉数据存储和查询

    因开发需要加入粉丝关注模块. 在好友关注关系中,主要有以上三种状态,即: 我的粉丝(fans) 我的关注(follow) 互粉(mutual) 设计思路如下: ​总体思路我们采用redis里面的zse ...

  6. 文件夹中是微信的好友列表数据,冒号前是一个用户,冒号后是该用户的所有好友(数据中的好友关系是单向的),参照笔记,求出哪些人两两之间有共同好友,及他俩的共同好友都有谁?

    题目 文件夹中是微信的好友列表数据,冒号前是一个用户,冒号后是该用户的所有好友(数据中的好友关系是单向的),参照笔记,求出哪些人两两之间有共同好友,及他俩的共同好友都有谁? 本题声明: 1.采用Lin ...

  7. 微信查看共同好友python_微信中怎么查看共同好友?

    展开全部 查看方法如下: 1.查看申请的理由: 通过陌生人申请的时候,可能62616964757a686964616fe4b893e5b19e31333366306431是有事情需要我们帮忙,或者是他 ...

  8. 【互粉社区】互粉社区为大家提供优质【求粉】和【评论】模板啦!

    [互粉社区]为大家提供优质[求粉]和[评论]模板啦! 优质求粉模板: https://phoenixash.blog.csdn.net/article/details/128675973 各位大佬们, ...

  9. 互点群,互助群,互阅群,微信互粉群

    场景: 玩小游戏的时候,想在游戏中更好的体验,更好的装备,经验加成. 玩微信小程序的时候,想了解更多,想互相提供帮助,想能帮你什么的. 在小程序中买火车票,想好友一键提速的. 外卖红包互帮互助拆的. ...

最新文章

  1. javascript实战项目——网页版贪吃蛇
  2. (数据结构与算法)数组模拟队列和环形队列
  3. python format格式化函数用法
  4. GitHub超实用操作
  5. 关于进程与线程的讲解 最最最生动的理解
  6. 赵栋 201771010137 《面向对象程序设计(java)》第二周学习总结
  7. 基于matlab的捷联惯导算法编程(一)
  8. 摸鱼必备游戏(上班族专用斗地主)
  9. 防爆破登录:配置/etc/hosts.deny禁止ip尝试ssh或者telnet操作
  10. cv2 imread函数 python_opencv-python图形图像处理入门基础知识
  11. FIL WORLD开启算力众筹新篇章,与世界一起助力FIL
  12. 什么是ISO?ISO增值的作用
  13. OPPOReno4SE和华为畅享20 哪款好
  14. PMP考试有哪些科目
  15. 【运筹学】指派问题匈牙利法
  16. keep怎么生成运动轨迹_KEEP的另类使用技巧——旅行记录
  17. redis 配置文件( IP、端口、密码等信息)
  18. 超市收银系统测试报告
  19. win7下设置 WiFi AP
  20. 泰勒级数为什么不可以展开?

热门文章

  1. OpenMLDB + OneFlow: 手把手教你快速链接特征工程到模型训练
  2. map职业性格测验 软件开发还是软件测试,MAP职业性格测验.PDF
  3. Desktop is unable to push commits to this branch
  4. RocketMQ作业
  5. 6.6.2 婚姻信息
  6. 在南方旅游 VS 在北方旅游
  7. hold time的负值问题
  8. 最强大脑非最强,你我都可是天才
  9. lammps教程:聚合物压缩,避免“bond atoms missing”
  10. 批评国足?王兴和美团被大帝们抵制了