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

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

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

实验背景介绍

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

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

MapReduce应用场景

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

涉及大数据产品

好友推荐MapReduce算法分析

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

例如:A,B,C,D,E五个人的好友关系如下图,其中实线表示互为好友关系。那么,如何获取两个不是好友的两个人之间的好友数?并以此为参考,进行对用户推荐陌生人。

1

首先,将好友关系分配到两个Map进行处理,其中每个Map包含3条好友关系。对每一条好友关系进行拆分,若Key中的两个人为朋友,则记录value值为0,否则value值为1。将拆分的结果进行排序,其中(A B)和(B A)作为同一个key(A B)。

2

然后,将分别对两个Map处理的记录进行初步合并,若两个记录的Key值相同且每条记录的Value都不为0,则Value值加1。注意:在Combine阶段,必须保留Value为0的记录,否则,在Reduce阶段,获取的结果会出错。

3

最后,通过Reduce方式,合并两个Map处理的Combine结果。首先,若两个记录的Key值相同且每条记录的Value都不为0,则Value值加1;然后,将Value值为0的记录删除;最后,获取不为好友的两个用户之间的公共好友数:Key为两个不为好友的用户,Value是两个不是好友的用户之间的共同好友数。社交网站或者APP可以根据这个数值对不是好友的两个用户进行推荐。

4

实验详情

下载实验数据

点击下载实验数据:friends_in_data.csv和MR jar包:friends_mr.jar至本地。

进入大数据开发套件

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

项目列表

  • 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分钟。

本地数据导入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到右侧画布的空白位置。

新建mr节点

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

MR节点

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

运行成功

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

数据预览SQL

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

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

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
1月前
|
存储 分布式计算 搜索推荐
【专栏】数据之海,分布式计算、数据存储与管理、数据分析与挖掘成为关键技术
【4月更文挑战第27天】在大数据时代,数据量爆炸性增长、类型多样及处理速度需求提升带来挑战。分布式计算、数据存储与管理、数据分析与挖掘成为关键技术,如Hadoop、Spark、HDFS、NoSQL等。实际应用包括互联网搜索、推荐系统、金融科技、智能城市等领域,大规模数据处理发挥关键作用,持续推动创新与奇迹。
|
1月前
|
数据可视化 前端开发 数据挖掘
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享(上)
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享
|
8天前
|
数据采集 机器学习/深度学习 数据可视化
数据挖掘实战:Python在金融数据分析中的应用案例
Python在金融数据分析中扮演关键角色,用于预测市场趋势和风险管理。本文通过案例展示了使用Python库(如pandas、numpy、matplotlib等)进行数据获取、清洗、分析和建立预测模型,例如计算苹果公司(AAPL)股票的简单移动平均线,以展示基本流程。此示例为更复杂的金融建模奠定了基础。【6月更文挑战第13天】
35 3
|
12天前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之sls日志告警调用函数计算,出现抛出的结果异常,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
14天前
|
SDN 网络虚拟化 虚拟化
云数据中心中的SDN/NFV应用
【6月更文挑战第9天】计算和存储虚拟化技术在云计算IDC中已基本满足需求,但网络成为新瓶颈,主要问题包括虚拟化环境下的网络配置复杂度增加、拓扑展现困难和无法动态调整资源。
|
1月前
|
存储 监控 NoSQL
【MongoDB 专栏】MongoDB 在实时数据分析中的应用
【5月更文挑战第11天】MongoDB,作为强大的非关系型数据库,擅长实时数据分析。其灵活数据模型适应多样化数据,分布式架构支持水平扩展,处理海量数据和高并发查询。应用于物联网、实时监控、金融交易分析及电商个性化推荐等领域。结合流处理技术和数据可视化工具,提升实时分析效能。然而,注意数据一致性和性能调优是应用关键。未来,MongoDB将持续发展,为企业实时数据分析带来更多可能性和机遇。
【MongoDB 专栏】MongoDB 在实时数据分析中的应用
|
1月前
|
SQL 数据采集 存储
Hive实战 —— 电商数据分析(全流程详解 真实数据)
关于基于小型数据的Hive数仓构建实战,目的是通过分析某零售企业的门店数据来进行业务洞察。内容涵盖了数据清洗、数据分析和Hive表的创建。项目需求包括客户画像、消费统计、资源利用率、特征人群定位和数据可视化。数据源包括Customer、Transaction、Store和Review四张表,涉及多个维度的聚合和分析,如按性别、国家统计客户、按时间段计算总收入等。项目执行需先下载数据和配置Zeppelin环境,然后通过Hive进行数据清洗、建表和分析。在建表过程中,涉及ODS、DWD、DWT、DWS和DM五层,每层都有其特定的任务和粒度。最后,通过Hive SQL进行各种业务指标的计算和分析。
268 1
Hive实战 —— 电商数据分析(全流程详解 真实数据)
|
1月前
|
数据采集 数据可视化 数据挖掘
Python 与 PySpark数据分析实战指南:解锁数据洞见
Python 与 PySpark数据分析实战指南:解锁数据洞见
|
1月前
|
数据采集 数据可视化 数据挖掘
Python在数据分析中的强大应用
【5月更文挑战第5天】Python在数据驱动时代成为数据分析师首选工具,得益于其丰富的数据科学库(如NumPy、Pandas、Matplotlib、Seaborn和SciPy)。这些库支持数据清洗、探索、建模和可视化。Python在数据清洗、文本分析、Web数据抓取和大数据处理等方面有广泛应用,并因其易学性、强大社区和广泛适用性而备受青睐。未来,Python在数据分析领域的角色将更加重要。
|
1月前
|
SQL 存储 分布式计算
如何使用MaxCompute进行数据分析?
【5月更文挑战第6天】如何使用MaxCompute进行数据分析?
22 1

热门文章

最新文章

相关产品

  • 云原生大数据计算服务 MaxCompute