大数据workshop:《云数据·大计算:海量日志数据分析与应用》之《社交数据分析:好友推荐》篇

实验背景介绍

了解更多2017云栖大会·成都峰会 TechInsight & Workshop.

本手册为云栖大会Workshop《云计算·大数据:海量日志数据分析与应用》的《社交数据分析:好友推荐》篇而准备。主要阐述如何在大数据开发套件中使用MR实现好友推荐。

MapReduce应用场景

  • 搜索:网页爬取、倒排索引、PageRank;
  • Web访问日志分析:分析和挖掘用户在web上的访问、购物行为特征,实现个性化推荐;
  • 文本统计分析:比如莫言小说的WordCount、词频TFIDF分析;学术论文、专利文献的引用分析和统计;
  • 海量数据挖掘:非结构化数据、时空数据、图像数据的挖掘;
  • 机器学习:监督学习、无监督学习、分类算法如决策树、SVM等;
  • 自然语言处理:基于大数据的训练和预测;基于语料库构建单词同现矩阵,频繁项集数据挖掘、重复文档检测等;
  • 广告推荐:用户点击(CTR)和购买行为(CVR)预测。

涉及大数据产品

  • 大数据开发套件

好友推荐MapReduce算法分析

现在,社交网络已经成为影响力巨大的信息平台,社交网站中,用户可以通过“你可能感兴趣的人”途径增加交友方式。“你可能感兴趣的人”也称作“好友推荐”, 它主要是通过查找两个非好友之间的共同好友情况来实现的。下面,将通过一个例子,简单介绍通过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至本地。

进入大数据开发套件

确保阿里云账号处于登录状态。

  • step1:点击进入大数据开发套件项目列表

  • step2:点击已经创建的项目空间名称,进入大数据开发套件。

新建数据表

继上实验《数据采集:日志数据上传》和《数据加工:用户画像》中已经新建脚本文件,可以直接切换至脚本开发tab下,双击打开create_table_ddl脚本文件。若无新建脚本文件可通过如下详细步骤进行创建脚本文件。

附建表SQL

drop table if exists dual;--创建系统dual
create 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);

导入本地数据

  • step1:完成输入和输出表的创建后,点击顶部功能栏中的导入,导入本地数据。然后,打开本地保存的文件friends_in_data.csv(点击本小节顶部的附件名“friends_in_data.csv” ,下载本次实验的测试数据)。

  • step2:所有配置均设为默认,并查看导入的数据。完成后,点击下一步

注意:在真实的工作环境中,数据必须以txt或csv的文件类型导入。

  • step3:在本地数据导入的页面的“导入至表”中,输入friends_in,也就是将本次实验的测试数据,导入到好友推荐的输入表friends_in中。确定目标字段源字段匹配。完成后点击导入。开始执行导入操作。由于数据量较大,请等待1-2分钟。

  • step4:完成表数据导入后,页面会自动退出导入界面。点击页面左侧栏中的表查询tab页,双击打开表friends_in。然后,点击数据浏览,就可以快速查看friends_in表中存
    储的数据。若显示的数据与文件 friends_in_data.csv数据相同,则证明本次实验的测试数据导入成功。

添加MR资源

  • step1:点击最左侧栏中的资源管理,然后在左侧栏的资源管理列表的顶部,点击最右侧的第一个图标上传资源,开始配置上传资源信息。

  • step2:在弹出的对话框中,配置如下所示的上传资源信息。完成后,点击提交,将本地的好友推荐Jar包上传到Data IDE环境中。

在页面左侧的资源管理下,可以查看到上传成功的Jar包friends_mr.jar

测试并验证好友推荐

  • step1:点击页面顶层栏中的新建新建任务,开始创建本次实验的MR任务。

  • step2:在弹出的对话框中,选择新建任务的任务类型工作流任务,并输入任务名称为friends_odps_mr。默认“调度类型”为“同期调度”。完成后,点击“创建”。

  • step3:此时,右侧页面变为friends_odps_mr的画布,拖右侧节点组件中的OPEN MR到右侧画布的空白位置。

在画布上,可以查看到一个名称为friends_mr的OPEN MR任务节点。双击,进入MR任务的编辑页面。

  • step4:输入如下配置信息,完成后,点击顶层栏中的保存图标,保存MR任务的配置信息。点击运行,运行本次配置的OPEN 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
  • step5:在底部的日志中,可以查看到运行状态和运行结果。大约40s左右,页面显示“Current task status:FINISH”,表示已运行结束。

  • step6:在上述建表脚本文件中输入如下的SQL命令,并点击运行。查询共同好友超过2个的数据信息。

SELECT * FROM friends_out WHERE cnt>2 order by cnt desc limit 100;

恭喜大家完成《云数据·大计算:海量日志数据分析与应用》的Workshop,基于此相信大家也掌握了MaxCompute、大数据开发套件、Quick BI的基本操作,也能够完成自己公司或个人的一些真实需求。关于更多的详细内容,可以点击了解更多阿里云数加。

大数据workshop:《云数据·大计算:海量日志数据分析与应用》之《社交数据分析:好友推荐》篇...相关推荐

  1. 弄潮儿数据_云数据服务的弄潮儿

    原文链接 作者:Derrick Harris 还记得只能选择两三家云计算数据服务的时候吗?事实上,伴随着云计算的发展,在这几大云平台上已经迅速地构建了很多云数据服务. 本文介绍一些主流并且当前运行良好 ...

  2. 深度数据 点云数据 激光数据

    深度数据:深度图像的外观效果和灰度图像类似,但是深度数据表示的是每个像素点距离深度传感器的实际距离,深度图像和RGB图像的像素点是一一对应的.kinect的红外发射器不断向外发送红外结构光,同时红外接 ...

  3. 《投资时报》报道云创大数据“稳经济”举措

    "紧抓行业未来发展方向,云创数据持续加强对新技术.新产品的创新研发投入,以期构建更强的综合实力壁垒,为"稳经济"做出贡献." 近日,<投资时报>系列 ...

  4. Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户

    深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:14:39 作者:陈飚 "昔我十年前,与君始相识." 一瞬间Hadoop也到了要 ...

  5. 无用的“数据”?有用的“大数据”

    "您于14天内到达或途径:'长沙市'.'贵阳市'.'宜宾市'"...... 14亿人,663座城市,960万平方公里,出行信息一码识别,在人海之中将你我精准关联.将出行点滴完整具象 ...

  6. 携手共建国产云生态,巨杉数据库与华云数据完成产品互认证

    日前,由广州巨杉软件开发有限公司与华云数据控股集团有限公司开展的产品兼容测试认证工作顺利完成,经双方共同测试,巨杉数据库SequoiaDB v3.4软件与国产通用型云操作系统安超OS 2020能够稳定 ...

  7. “扎根”信创,华云数据许广彬:做政企上云背后的力量

    ​ 走好自己的路,做好政府和企业用户背后最坚实的力量,帮助他们上好云.用好云. 作者|王修竹 出品|产业家 "云计算与大数据独角兽""中国私有云前三甲企业"&q ...

  8. SDN 云数据中心网络异常行为的智能处理实践

    火炉山蚁群 ┃ 一群自研转型的背锅侠 摘要:云数据中心的网络异常行为不仅对网络设备造成严重业务负荷,同时也显著影响云用户使用感知.云计算环境中的共享资源模式和云用户迥然不同的业务形态,使得云网络分析和 ...

  9. 【PBL项目实战】户外智慧农场项目实战系列——7.Mind+Mixly双平台工业级多合一空气质量传感器数据上云及云端可视化展示

    [PBL项目实战]户外智慧农场项目实战系列--7.Mind+Mixly双平台工业级多合一空气质量传感器数据上云及云端可视化展示 原文链接  https://mp.weixin.qq.com/s/ZEU ...

  10. 天云数据中标某股份制证券公司项目 提供国产企业级人工智能平台服务

    今年4月,某证券有限公司决定就"企业级"人工智能平台产品及技术服务进行招标采购,天云数据中标.标书发出日期为4月1日,投标截止时间为4月21日15:00.不足21天的准备,什么样的 ...

最新文章

  1. Day1 - Python基础1作业【编写登陆接口】
  2. 日本Quoine的ICO平台正式将BCH作为融资货币
  3. 利用SparkSQL(java版)将离线数据或实时流数据写入hive的用法及坑点
  4. armbian nginx 部署博客_从零开始搭建服务器之更加优雅地部署项目
  5. hiho1249 Xiongnu's Land
  6. 工业用微型计算机笔记(5)-指令系统(2)
  7. python课程设计小程序_python实验课做的一些小程序
  8. php检测一个变量是否设置函数,php如何判断变量是否有设置的函数
  9. SQL select 语法(转)
  10. 小甲鱼 OllyDbg 教程系列 (十四) : 模态对话框 和 非模态对话框 之 URlegal 和 movgear
  11. Product of Three Numbers(CF-1294C)
  12. 3d在调试区输出坐标_CSS3如何实现一个 3D 效果的魔方
  13. erp沙盘采购总监的心得_经验分享 让ERP系统操作少走冤枉路
  14. Python容器专题 - 列表(list)
  15. PHP中使用CURL(三)
  16. 小程序UI库 iView Weapp
  17. java计算机毕业设计技术的游戏交易平台源码+数据库+系统+lw文档+mybatis+运行部署
  18. Windows系统口令扫描之——使用Tscrack扫描3389口令
  19. php怎么求阶乘_php递归函数求阶乘
  20. [贪心][区间dp]Zero-One Codeforces1733D1D2

热门文章

  1. Eclipse 中 工程 引用 其他 工程的 配置方法。
  2. Android模拟神器Genymotion eclipse插件安装问题出解决
  3. Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法 .
  4. configure: error: cannot guess build type; you must specify one解决方法
  5. Android实际开发中的bug总结与解决方法(一)
  6. 在maven项目中解决第三方jar包依赖的问题
  7. 解决问题 “You don‘t have permission to access /index.html on this server.”
  8. Vue---vue-cli 中的proxyTable解决开发环境中的跨域问题
  9. 如何实施基本的“长轮询”?
  10. python 代理服务器 身份验证_使用httplib2处理身份验证和代理服务器