【云栖号案例 | 互联网】驻云科技基于MaxCompute搭建社交好友推荐系统-阿里云开发者社区

开发者社区> 云栖号案例库> 正文

【云栖号案例 | 互联网】驻云科技基于MaxCompute搭建社交好友推荐系统

简介: 公司需要具备海量的数据、处理数据的能力、商业变现的场景才能使用大数据。通过MaxCompute搭建数据仓库,提供分布式的系统,将好友推荐系统在阿里云上实现。
+关注继续查看

云栖号案例库:【点击查看更多上云案例】
不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策!

公司介绍

驻云科技是国内领先的云技术服务提供商,致力于将普惠计算能力落实到每家企业,通过输出多年的云服务经验和能力,帮助企业充分利用云计算和新技术的优势,有效管理和优化其 IT 架构,用数据连接业务,持续创新,助力企业在新时代获得成功。CloudCare 是驻云科技旗下的一站式 IT 服务品牌,通过将多年的云服务经验数字化,结合基于人工智能的云管理协作平台,提供丰富的产品、一系列专家服务、成熟的解决方案,以及云上开发和交付。

大数据在好友推荐系统中的应用

驻云科技基于MaxCompute搭建了社交好友推荐系统,使用MaxCompute阿里的大数据计算的方法在这种场景下可以完成社交好友推荐。现在大家都在讲大数据,如果想去使用这些数据,需要具备三个要素:

  • 海量的数据

数据量越多越好,只有数据量达到了足够大,我们才能从数据中挖掘出来更多有用信息。

  • 处理数据的能力

有了这样很高的快速处理数据的能力,可以让我们更快的去把数据里面的信息挖掘出来。

  • 商业变现的场景

我们采集大数据的时候,并不是数据越多越好,一定要有一个具体的场景。以推荐系统为例来看一下大数据的一个应用。
支付宝首页有一栏推荐可能是你的好友,那些人都是你可能认识的人,但是双方并未互加好友。Linkin是一个求职社交网站,Linkin 也会告诉你哪一些用户是你潜在的好友,而且Linkin会告诉你这个好友跟你是一度的关系的还是两度的关系或者是三度的关系。潜在关联性高的,会在前面直接显示出来,潜在关联性没有那么高的也会在后面显示出来,这两个都是典型的一个好友推荐。 进行好友推荐的时候,怎么给用户进行推荐,首先这两个人是非好友的关系,然后去看一下他们俩潜在共同好友的处理,通过这种方式去给用户推送,潜在好友数量多,就认为这两个人是好友关系。

p87308

在一个人与人之间的社交关系服务中,原始数据每条Record包含两个字段,即user和friends,use唯一表示一个用户,friends是该用户的好友。例如A与B 是好友,我们可以通过这五个方式画出来,让机器去分析这些数据,需要把这种社交的关系,转换成机器可以识别的数据,转换成左侧这样的二维表的数据,比如说A 跟B、 C、D 他们之间是好友,我们左侧是A 跟B、C、D 是好友关系,剩下这些也是类似的,这样就可以把这个表传到机器里面进行分析,比方说通过分析之后,发现A 跟E 有一个共同好友,B 跟D 有两个共同好友,然后C 跟E 有一个共同好友。这个时候就可以推荐B 跟D 他两个是一个潜在的好友,而排在前面,A 跟E 或者C 跟E 排在概率往下,稍微低一些,潜在好友多的排在前面,潜在好友少的排在后面,通过这种方式来进行排列,这个是我们期望的结果。

好友推荐系统的分析模型

我们怎么来去计算呢?我们一般使用方式是什么呢?使用的是MapReduce 这样的一个计算模型,MapReduce 是一种编程模型,用于大规模数据集的并行运算,它由三部分组成分别是Map、Combine、Reduce。以好友推荐场景为例。

图 1. 驻云科技:好友推荐系统的Map阶段

p88184

首先输入左侧机器可以识别的数据,输入之后,在Map 端先把数据做一个拆分,拆分成两份不同的数据,在拆分的同时把它转换成key、value的类型,比方说A、 B、D、E 这几行数据转换成什么呢? A 跟B,然后value 是零,零代表他们两个已经是好友。如果两个不是好友的话,自定义这一行数据,B 跟D 不是好友,就把他的值视为1。下面的B、E,还有D 跟E 也是1。把原来一行数据转换成Key、Value 这个形式的数据,类似于右边这样的数据,上面是key、value 的一个类型,下面也是类似的。这个是在Map 做的事情,把这个数据通过两个key、value 进行一个拆分,转化成key、value 这样的一个类型。

图 2. 驻云科技:好友推荐系统的Combine阶段

p88189

Combine 是对数据先做一个本地的汇总,先看到有一些数据是重复的,比如说 A 跟B 是零,A 跟B 是零,出现了两次,这个时候就存一个就可以。其他类似的,把这些数据在本地做完汇总,类似于这张表,这两个数据。

p88219

接着是第三步是Reduce 阶段,Reduce 是对这些数据进行一个汇总,把两边数据汇总到一起,然后对每一个Key 值对应唯一的一个value 值做一个汇总,这个就是它最终计算的一个结果。如果两个用户已经是好友了,Value 值是零的话,不需要再给他推荐。所以说A、B 如果是零的话就剔掉,只需要知道它的value 值是大于零的,有潜在好友,同时这两个人目前还是非好友的关系,这个就达到了想要的效果。

大数据开发套件DataIDE的应用

p88221

另外一个除了MaxCompute 之外还有一个会用到一个大数据开发操作 DateIDE,大数据开发套件DataIDE(现名:数据工场DataWorks)提供一个高效、安全的离线数据开发环境。为什么介绍它呢?是因为DateIDE只是对数据任务工作流的一个开发,其实底层的数据处理,数据分析,都是在MaxCompute 上完成,可以简单理解为DateIDE 就是一个图象化的数据开发的服务,它是为了帮助我们更好去使用MaxCompute。也可以看到,这我们可以在DateIDE 进行一个开发,不需要直接在MaxCompute 里面进行开发了,在MaxCompute 开发的一个效果,跟在 DateIDE 里面开发的效果对比。

MaxCompute的应用

技术特点:

  • 分布式:分布式集群、跨集群技术、可灵活扩展。
  • 安全性:从安全性来讲具有自动存储纠错、沙箱机制、多分备份。
  • 易用:具有标准API、全面支持SQL、上传下载工具。
  • 权限控制:多租户管理、用户权限策略、数据访问策略。

对于MaxCompute 的使用的场景,可以使用MaxCompute 搭建自己的一个 数据仓库,同时,MaxCompute 还可以提供一种分布式的应用系统,比方说可以通过图计算,或者通过有效的宽幅的方式,可以搭建一个工作流。比方说数据分析其实是周期性的,如果数据每天要分析一次,可以在MaxCompute 里面生成任务工作流,设置一个周期性的调度,每天要让它调度一次,MaxCompute 可以按照设计好的工作流,调动周期,然后去运行;MaxCompute 在机器学习里面也是有用的,因为机器学习会用到MaxCompute 分析出来的数据,其他相类似的服务对数据进行分析处理,分析出来的结果数据放到机器学习平台里面,让机器通过一些算法一些模型,去学习这里边的数据,生成一个希望达到的模型。

MaxCompute 的应用开发流程:

  • 安装配置环境
  • 开发MR 程序
  • 本地模式测试脚本
  • 导出ar 包
  • 上传到MaxCompute 项目空间
  • 在MaxCompute 中使用MR

下面我们以一个好友推荐的事例来详细讲解一下这个过程。首先需要去安装MaxCompute 客户端,使用它的好处是可以在本地通过命令的方式去远程使用阿里云的MaxCompute,在本地只需要配置MaxCompute信息就可以。另外还需要去配置自己的一个开发环境,因为现在阿里云的MaxCompute 主要是两种语言,一种是Java 一种是Eclipse。然后新建项目,在开发新建项目的时候,大家可以看到这个红包,这个红包就是需要配置本地的客户端的信息。

接下来就是简单的测试,开发之后要测试,这个代码是不是按照设想的方式去工作的。接着这边输入的是一个测试数据,这个输出的数据类别,就是输出的这样的一个表格,表格有三列,第一类是用户A,第二类是用户B,第三类是两个潜在的共同好友的数量,只需要关注这三个数据就可以,然后就可以测试。接着第三个本地运行的数据的代码,运行的结果就是通过本地的开发测试,在本地测试的时候这边有一个 数据,你第一步需要选择是使用哪一个的一个项目处理。第二个要选择输入表和输出表,要告诉他输出表是哪个,输出表的目的是什么,告诉这个程序,你输出的结果保存在表里面,配置好点击运行这个结果就出来了。

本地开发测试成功之后,接着要把它打成一个Jar包,然后上传到阿里云上,就是上传到MaxCompute 的集群里边。第二个打完Jar包以后添加资源,下面就把刚刚输出的Jar包,通过资源的管理,把刚刚输入的Jar包上传上来。本地开发测试好的一个MR 的Jar 包已经上传到MaxCompute 集群里。

上传好了之后就可以使用它,去新建一个任务,然后这个任务去起个名字,这个任务跟哪一个Jar 包相关联,接着是OPENBMR,我们选的是MR 的程序,所以里面选的是OPENMR 模块,生成这样的一个任务,进入到编辑页面,在编辑页面里面首先告诉它,这个OPENMR任务,使用的是上传的好友推荐的一个Jar 包,最下面告诉它Jar 包里面的程序的逻辑是什么,在这个里面制定好之后点击运行结果就会出来。这个就是我们在本地开发测试,把资源上传到MaxCompute 的集群里面,接着在集群里面去使用我在本地开发好的Jar 包,这个就是开发和部署的全流程。

【云栖号在线课堂】每天都有产品技术专家分享!
在线课堂地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
北京云栖大会 Tech Insight 爆场论坛-云数据·大计算:快速搭建互联网在线运营分析平台
2月19日上午9点,Tech Insight·北京峰会,在2017北京云栖大会国家会议中心准时拉开帷幕。做为年内压轴之作, 吸引了大量技术决策者,和一线的工程师、运维工程师等前来交流学习。
2147 0
阿里云 Composer 镜像开源啦!3 步快速搭建自己的 Composer 的镜像!
为了服务 PHP 开发者,2019 年 7 月,阿里云提供了 Composer 镜像服务。本文将为大家介绍如何通过 3 步快速搭建自己的 Composer 镜像。
3005 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4407 0
【云栖号案例 | 互联网】WeWork系统APP上云助力公司服务本土化
WeWork中国区业务发展非常迅速,急需本土化APP来接管中国区域用户服务,阿里云助力整个会员APP上线,全程业务零故障!是公司本土化努力的一个全新里程碑!
869 0
【流数据与大屏DataV】如何使用DTS,Datahub,StreamCompute,RDS及DataV搭建流数据大屏
本文主要从数字化大屏的价值及实现两方面阐述了数字化大屏的制作过程。
3199 0
【云栖直播】精彩推荐第3期:个性化推荐系统搭建实践
【云栖直播】精彩推荐第3期:个性化推荐系统搭建实践
4176 0
176
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载