综合项目(三):查找QQ共同好友
3.1 项目分析
3.1.1 项目功能简介
社交网络中的好友是指在社交网络中出现在用户联系人列表中的用户,它是一种广义上的朋友,既可以是Facebook和街旁网中的好友,也可是新浪微博中的关注用户等。为社交网络用户推荐好友就是帮助用户在社交网络中找到她们感兴趣的用户,进而添加到自己的联系人列表之中。
在社交网络中存在大量稀疏的朋友关系,为用户提供准确、快速的好友推荐服务是一项极具挑战性的任务。当前,社交网络中的好友推荐通常利用三种用户信息:用户相似度信息、网路结构信息和内容信息。
目前的社交网络平台大都通过用户的属性信息来计算两个用户的相似度。两个用户的相似度越大,则他们之间越有可能成为好友,进而向他们彼此进行好友推荐。
在社交网络中,用户之间的好友关系在不断地建立和丰富,以此形成的社交网络结构也更加真实可靠。利用网络结构信息,采用不同的指标来度量用户的相似性,这样可以产生更好的好友推荐结果,让用户发现很多的熟人。
用户发布的内容信息,如评论信息、回复内容、用户标签、图片、视频等,在一定程度上与用户所关系的问题有关,研究人员已经开始探索利用各种内容信息,来为用户提供准确的好友推荐服务。
本项目使用Java语言编写MapReduce程序,帮助用户找出哪些人两两之间有共同好友,及他俩的共同好友都有谁。初始数据如图3.1所示,运行结果如图3.2所示。
图3.1 用户好友数据原始数据
图3.2 两两之间的共同好友
3.1.2 项目模块分析
根据“查找共同好友系统”程序的执行效果可知,该项目分为2个大模块,如图3.3所示。
图3.3 查找共同好友系统模块
(1)查找好友隶属:编写MapReduce程序,查找每个人的好友隶属关系,查找好友隶属于哪些人。
(2)查找共同好友:根据好友的隶属关系,查找两两的共同好友。
3.1.3 模块业务流程分析
1.对“查找好友隶属”的执行效果进行分析,业务流程如下。
(1)上传原始数据到HDFS的指定目录中。
(2)上传MapReduce程序到集群,使用命令行的方式执行该程序,查找每个人的好友隶属关系,并将隶属关系存放到HDFS的指定目录。
2.对“查找共同好友”的执行效果进行分析,业务流程如下。
(1)上传MapReduce程序到集群,使用命令行的方式执行该程序,将好友隶属关系文件作为数据源,进行两两的共同好友处理。
(2)到输出的结果目录下载结果数据,验证结果的正确性。
3.1.4项目涉及技术
使用Hadoop集群,并编写MapReduce,对好友原数数据进行处理,到两两的共同好友。
3.1.5 项目计划
“商品推荐系统”项目总开发课时数10课时,具体任务计划表见表3.1。
表3.1 任务计划表