本文共 3391 字,大约阅读时间需要 11 分钟。
2017云栖大会·成都峰会 TechInsight & Workshop.
本手册为云栖大会Workshop《云计算·大数据:海量日志数据分析与应用》的《社交数据分析:好友推荐》篇而准备。主要阐述如何在大数据开发套件中使用MR实现好友推荐。
现在,社交网络已经成为影响力巨大的信息平台,社交网站中,用户可以通过“你可能感兴趣的人”途径增加交友方式。“你可能感兴趣的人”也称作“好友推荐”, 它主要是通过查找两个非好友之间的共同好友情况来实现的。下面,将通过一个例子,简单介绍通过MapReduce的方式实现好友推荐功能。
例如:A,B,C,D,E五个人的好友关系如下图,其中实线表示互为好友关系。那么,如何获取两个不是好友的两个人之间的好友数?并以此为参考,进行对用户推荐陌生人。
首先,将好友关系分配到两个Map进行处理,其中每个Map包含3条好友关系。对每一条好友关系进行拆分,若Key中的两个人为朋友,则记录value值为0,否则value值为1。将拆分的结果进行排序,其中(A B)和(B A)作为同一个key(A B)。
然后,将分别对两个Map处理的记录进行初步合并,若两个记录的Key值相同且每条记录的Value都不为0,则Value值加1。注意:在Combine阶段,必须保留Value为0的记录,否则,在Reduce阶段,获取的结果会出错。
最后,通过Reduce方式,合并两个Map处理的Combine结果。首先,若两个记录的Key值相同且每条记录的Value都不为0,则Value值加1;然后,将Value值为0的记录删除;最后,获取不为好友的两个用户之间的公共好友数:Key为两个不为好友的用户,Value是两个不是好友的用户之间的共同好友数。社交网站或者APP可以根据这个数值对不是好友的两个用户进行推荐。
:friends_in_data.csv和MR jar包:friends_mr.jar至本地。
确保阿里云账号处于登录状态。
继上实验《数据采集:日志数据上传》和《数据加工:用户画像》中已经新建脚本文件,可以直接切换至脚本开发tab下,双击打开create_table_ddl脚本文件。若无新建脚本文件可通过如下详细步骤进行创建脚本文件。
附建表SQL
drop table if exists dual;--创建系统dualcreate table dual(id bigint);--如project中不存在此伪表,则需创建并初始化数据
insert overwrite table dual select count(*)from dual;--向系统伪表初始化数据
---创建好友推荐MR的数据输入表.其中uid表示某个用户;friends表示uid用户的好友create table friends_in (uid string, friends string);
---创建好友推荐MR的数据输出表.其中userA表示某个用户;userB表示不是userA的用户,cnt表示userA和userB之间的共同好友数。create table friends_out (userA string, userB string, cnt bigint);
注意:在真实的工作环境中,数据必须以txt或csv的文件类型导入。
在页面左侧的资源管理下,可以查看到上传成功的Jar包friends_mr.jar
在画布上,可以查看到一个名称为friends_mr的OPEN MR任务节点。双击,进入MR任务的编辑页面。
配置项目说明:
- MRJar包:点击文本框,并选择friends_mr.jar
- 资源:默认设置为friends_mr.jar
- 输入表:输入friends_in
- mapper:输入friends_mr_odps.FriendsMapper,此为Jar包中Mapper的class全名
- reducer:输入friends_mr_odps.FriendsReducer,此为Jar包中Reducer的class全名
- combiner:输入friends_mr_odps.FriendsCombiner,此为Jar包中Combiner的class全名
- 输出表:输入friends_out
- 输出Key:输入userA:String, userB:String
- 输出Val:输入cnt:Bigint
SELECT * FROM friends_out WHERE cnt>2 order by cnt desc limit 100;
恭喜大家完成《云数据·大计算:海量日志数据分析与应用》的Workshop,基于此相信大家也掌握了MaxCompute、大数据开发套件、Quick BI的基本操作,也能够完成自己公司或个人的一些真实需求。关于更多的详细内容,可以点击。
转载地址:http://howno.baihongyu.com/