基于MaxCompute搭建社交好友推荐系统

摘要:本次由阿里云驻云科技资深架构师翟永东带来了“基于MaxCompute搭建社交好友推荐系统”为主题的分享,主要对大数据在好友推荐系统中的应用、好友推荐系统的分析模型、好友推荐系统在阿里云上的实现方式和MaxCompute技术进行了精彩的介绍。

点此查看原文:http://click.aliyun.com/m/42756/

本次由阿里云驻云科技资深架构师翟永东带来了“基于MaxCompute搭建社交好友推荐系统”为主题的分享,主要对大数据在好友推荐系统中的应用、好友推荐系统的分析模型、好友推荐系统在阿里云上的实现方式和MaxCompute技术进行了精彩的介绍。

直播视频:https://yq.aliyun.com/articles/417170

以下为精彩视频内容整理:

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

给大家分享一下基于MaxCompute搭建社交好友推荐系统,使用MaxCompute阿里的大数据计算的方法可以做哪些事情,如果说是以社交好友的推荐,来给大家去演示一下。好友推荐系统它的一个场景介绍,现在大家都在讲大数据,如果想去使用这些数据,我们认为它需要具备三个要素,第一个要素是海量的数据,数据量越多越好,只有数据量达到了足够大,我们才能够成为一个数据里面潜在去挖掘出来。第二个是处理数据的能力,有了这样很高的快速处理数据的能力,可以让我们更快的去把数据里面的信息挖掘出来。第三个是商业变现的一个场景,我们采集大数据的时候,并不是数据越多越好,一定要有一个具体的场景。以推荐系统为例来看一下大数据的一个应用。

图片描述

左边是支付宝,在支付宝一打开的时候,下面会有一栏推荐可能是你的好友,一般的话下面的那些人都是你认识的,可能还没加他们为好友。右侧是Linkin,它是一个求职社交网站,Linkin也会给你这样的一个推荐,会告诉你哪一些用户是你潜在的好友,而且Linkin会告诉你这个好友跟你是一度的关系的还是两度的关系或者是三度的关系。潜在关联性高的,会在前面直接显示出来,潜在关联性没有那么高的也会在后面显示出来,这两个都是典型的一个好友推荐。

进行好友推荐的时候,怎么给用户进行推荐,首先这两个人是非好友的关系,接着我们去看一下他们俩潜在共同好友的处理,通过这种方式去给用户推送,比方说潜在好友数量多,我就认为这两个人是好友关系,就是通过这种方式来实现的。

图片描述

上图的右侧是人与人之间的一个社交关系的服务,比如说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。

以好友推荐这样的一个场景为例。

图片描述

首先输入左侧机器可以识别的数据,输入之后,在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这样的一个类型。

图片描述

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

图片描述

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

好友推荐系统在阿里云上的实现方式

图片描述

好友推荐阿里云实现整个的架构是怎么样的呢?比方现在有一个社交软件是一个业务系统,前端使用阿里云的云服务器ECS去部署整个的社交的软件的应用,入库的一些数据存到阿里的RDS,这个就是当前的一个社交应用系统。业务系统里面产生了一个数据,怎么来对数据进行分析,首先需要在数据库里边把这个数据提取出来,提取到阿里云的大计算服务MaxCompute里面,很类似于我们传统做数仓的时候ETL的一个过程,会利用阿里云的大数据开发平台对数据进行分析和处理。

使用它可以快速便捷的去开发我们数据植入或者数据这样的一个流程,这个就是会使用大数据开发平台和大数据制造,结果是一个数据分析结果,还需要前端的应用数据对分析出来的结果展示出来。

MaxCompute的技术特点

对于MaxCompute的一些技术特点主要有一下几点:

(1)分布式:分布式集群、跨集群技术、可灵活扩展。

(2)安全性:从安全性来讲具有自动存储纠错、沙箱机制、多分备份。

(3)易用:具有标准API、全面支持SQL、上传下载工具。

(4)权限控制:多租户管理、用户权限策略、数据访问策略。

MaxCompute的使用场景

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

大数据开发套件DataIDE

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

图片描述

这个是DateIDE整个应用的一个场景,我们在进行数据分析的时候,需要对里面的原数据进行整合统一保存,这个时候可以在DateIDE上实现,把所有的原数据的信息统一汇总到MaxCompute里面进行一个保存,同时还可以DateIDE进行数据的加工,存储等操作都可以在DateIDE上完成。DateIDE在整个数据分析的过程中可以对数据存储、分析、处理、集群等处理。

MaxCompute的应用开发流程

MaxCompute的应用开发流程一共需要六步分别是:

(1)安装配置环境

(2)开发MR程序

(3)本地模式测试脚本

(4)导处jar包

(5)上传到MaxCompute项目空间

(6)在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包,这个就是整个的一个开发和部署的一个流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高德地图基于阿里云MaxCompute的最佳实践

摘要: 云计算带来的变革不言而喻,作为一种新型的IT交付模式,切实为企业节省IT成本、加快IT与企业业务结合效率、提升创新能力、加强管理水平以及增强系统本身的可靠性等方面提供巨大支持,是企业实现新发展的重要途径,它…

如何从零开始设计一颗芯片?

戳蓝字“CSDN云计算”关注我们哦!来源:陌上风骑驴看IC作者:陌上风骑驴在各方助力下,集成电路成了时代热点,有大量文章在写芯片设计之复杂之困难,老驴打算从EDA 使用角度捋一遍芯片设计流程。在老驴画出第一…

第5篇:Flowable快速工作流脚手架Jsite_请假实战_部署流程和发起流程

接上一篇:第4篇:Flowable快速工作流脚手架Jsite_启动项目 https://blog.csdn.net/weixin_40816738/article/details/103388465 说明:此版本我已经调通,最新版本正在更新,页面未处理好,因此采用历史版本…

离线计算中的幂等和DataWorks中的相关事项

摘要: 概念 幂等这个词在软件研发中经常被提到。比如消息发送时不应该同时给同个用户推送多次相同的消息,针对同一笔交易的付款也不应该在重试过程中扣多次钱。曾见过一个案例,有个对于一个单据的确认模块没有考虑到幂等性,导致对…

解决在待办任务菜单中都会抛出异常,由于definitionId=undefined导致的问题

文章目录一、部门经理流转1. 登录dept账号2. 在待办任务中,签收任务3. 在待办任务中,办理任务3.1. 响应码5003.2. 请求的url3.3. 页面传递的参数3.4. 控制台报错信息提取3.5. 在获取代办列表FlowTaskService的104行3.6. 在获取代办列表FlowTaskService的…

程序员竟以身试“色”,只因给女友选七夕礼物!看完我酸了

戳蓝字“CSDN云计算”关注我们哦!作者 | 伍杏玲出品 | 程序人生(ID:coder_life)铛铛档,你知道 8 月 7 号是什么日子吗?除了是工作日的星期三,它还是七夕情人节!在程序员一片哀嚎“我…

第6篇:Flowable快速工作流脚手架Jsite_请假实战_部门经理审批

接上一篇:第5篇:Flowable快速工作流脚手架Jsite_请假实战_部署流程和发起流程https://blog.csdn.net/weixin_40816738/article/details/103388680 说明:此版本我已经调通,最新版本正在更新,页面未处理好,因…

华为正式发布方舟编译器,相关源码已开放下载;微软开源量子开发工具包 QDK;GitHub回应突然断供:也很无可奈何的样子……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 本田1.34亿份文档&#xff0…

【MPS最佳实践】媒体工作流转码

摘要:背景 1个输入文件对应多个输出文件(不同分辨率,不同格式等),通过控制台的图形化界面,快速搭建常用视频处理流程。 优势 简单易用,视频上传完成自动触发转码任务。 功能强大,支持…

解决由于没有办理权限导致的403,权限不足

接上一篇:解决在待办任务菜单中都会抛出异常,由于definitionIdundefined导致的问题 https://blog.csdn.net/weixin_40816738/article/details/103389663 文章目录一、问题现象二、问题定位三、解决方案3.1. 登录jsite系统管理员账号,给dept用…

音视频转码技术指南:国内主流云转码服务提供商对比测评

摘要:随着大量视频产生,怎样才能够高效精准地对视频进行云端转码和处理,来适配多终端展示需求和应对复杂的网络情况,是我们视频行业开发人员工作的重中之重。作为从业者,我们会经常接触各大云转码服务商,对…

突发!Python再次第一,Java和C下降,凭什么? ​

编程语言流行指数(PYPL)排行榜近日公布了2019年8月份榜单。在最新一期榜单上, Python的份额高达28.73%,再次蝉联第一,并且增长4.5%,同时成为增长势头较好的语言。而被挤到第二蝉联Java,同比下跌2.1个百分点…

第7篇:Flowable快速工作流脚手架Jsite_请假实战_HR审批

接上一篇:第6篇:Flowable快速工作流脚手架Jsite_请假实战_部门经理审批 https://blog.csdn.net/weixin_40816738/article/details/103388916 说明:此版本我已经调通,最新版本正在更新,页面未处理好,因此采用…

智能助手被指侵犯用户隐私,美三大科技巨头或面临调查;传小米已解散其VR头显Mi VR团队;特斯拉成立反欺诈部门……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 谷歌将关闭手机端旅游应用Tr…

全面提升,阿里云Docker/Kubernetes(K8S) 日志解决方案与选型对比

摘要:今天,日志服务再次升级Kubernetes(k8s)的日志解决方案。1分钟内即可完成整个集群部署,支持动态扩容,提供采集宿主机日志、容器日志、容器stdout等所有数据源的一站式采集。点此查看原文:ht…

再次“重新定义” 华为争做数据基础设施领航者

戳蓝字“CSDN云计算”关注我们哦!数字经济是随着信息技术革命发展而产生的一种新的经济形态。近年来,随着我国开始更多从经济视角观察数字化问题,数字经济开始升温。7月31日,国家统计局发布2018年我国经济发展新动能指数。测算结果…

《阿里巴巴Android开发手册》正式发布,献给移动开发者的新年礼物

春节余味尚未消,我们为移动开发者准备了一份迟到的新年礼物——《阿里巴巴Android开发手册》,继《阿里巴巴Java开发手册》之后,阿里巴巴开发规范家族又添一丁,「阿里巴巴Android开发规范」认证考试也同步上线。 手册免费下载&…

搜索引擎背后的原理和中文日志检索

摘要: 日志服务支持的两种搜索方式 通过设置分词字符(通常是标点符号),把一段文本划分成不同的单词。分词字符只能是单字节ascii字符这种方式适合于切分英文单词。这种方式对于中文日志,必须要搜索中文语句整体。 点此查看原文:ht…

解决在已办任务菜单中都会抛出异常,由于definitionId=undefined导致的问题

任务办理完了,在已办任务(历史)菜单中,查看一下任务办理的节点信息不为过吧, 其实,也是那个definitionIdundefined导致的,也是由于获取的对象不对,这里我直接修改程序。 解决方案: //修改后…

华为高通5G华山论剑,一文看懂5G芯片背后的明争暗斗

戳蓝字“CSDN云计算”关注我们哦!来源:鲜枣课堂作者:小枣君 6月6日工信部正式发放5G商用牌照之后,国内5G网络建设的步伐大幅加快了。越来越多的城市出现了5G基站和5G信号,5G离我们的距离更近了。面对激动人心的5G&…