`
angelbill3
  • 浏览: 256964 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

【翻译】运用MapReduce找到社交媒体中的共同朋友

 
阅读更多
原文:http://stevekrenzel.com/finding-friends-with-mapreduce
关于MapReduce的运用,最近阅读到的一篇文章,写的很不错,搬过来分享下。

MapReduce是一种编程模型,用于大数据(>1TB)的并行运算。对于原理可以简化为两个步骤:map(映射)方法和reduce(归约)方法。Map方法是将一个值输出为key-value的对应。比如统计一篇英文文章中某个长度有几个单词。具体思路是输入一个目标句子,那么输出就可以是以目标字符串中的一个单词长度为key,单词本身为value的map。这个map的方法没什么其它的依赖,只需要输入一个单词就可以完成map方法的输出。这样可以进行并行运算。具体如下:
3 : the
3 : and
3 : you
4 : then
4 : what
4 : when
5 : steve
5 : where
8 : savannah
8 : research

分组整理后:
3 : [the, and, you]
4 : [then, what, when]
5 : [steve, where]
8 : [savannah, research]

每行数据会进行reduce方法,即一个特定长度的key会对应一个value的list。再往深入点,我们可能会计算每个特定长度的词有多少个,于是reduce方法将会整理出如下对应关系:
3:3
4:3
5:2
8:2
综上所述就是map方法和reduce方法都可以分N个机器进行并行运算,这样在时间上的优势是很大的。经过以上步骤就分析出某个长度的词汇在文章中出现的次数了。

另一个关于MapReduce的类似例子是统计词语在文章中出现的次数。
首先要做的就是将文章中的词汇逐个转成map,key是这个词汇本身,value默认为1。然后进行分组整理,此时key还是这个词语本身,value是次数为1的集合(list),最后的reduce要做的就是合计value,即将所有的1相加,最终的输出结果就是词语-次数的map。
看起来好像很容易,以上的例子就是MapReduce的“Hello World”。来说说现实生活中的运用MapReduce的例子吧:

社交平台(例如Facebook)会有一个好友的列表(假设这个朋友关系是双向的,即A是B的好友,那么B也必须是A的好友)。平台的优势是大公司不差钱存储空间多,平台每天有几百万次的点击量,所以他们决定提前计算,从而减少请求的时间。比如你和Joe有230个共同好友,当Joe访问你的主页时,他可以看到一个共同好友的列表,这个列表可能不经常改动,所以如果每次访问都实时统计一遍实属浪费资源和时间(当然另一种解决方案是Cache)。这时候可以用mapreduce每天计算朋友之间的共同朋友,并保存下来,这样每次请求的时候就特别方法,虽然占用空间,但便宜。

Assume the friends are stored as Person->[List of Friends], our friends list is then:
假投朋友关系存储是按key-value:某个人->[朋友集合],如下:
A -> B C D
B -> A C D E
C -> A B D E
D -> A B C E
E -> B C D

每一行都是一个mapper,但是上面的键值是一个朋友的List,而我们要的是两个好友之间的共同朋友,所以基于这个需求,需要将值重新拆成单个key-value的配对(当前这个人与他朋友之间的两两配对),这样就可以变成某个人和特定的朋友之间的关系了。这个健值是有顺序的(便于双向访问的时候用同一个键值,即A访问B的时候是(A B),B访问A的时候也是(A B)),按这个逻辑来重新组合,就变成了如下结果:
For map(A -> B C D) :
(A B) -> B C D:具体说下意思:(A B) -> B C D的意思是A和B是共同好朋友->A的所有的好朋友,下同。
(A C) -> B C D
(A D) -> B C D
For map(B -> A C D E) : (注意键值是有顺序的,即A在B的前面)
(A B) -> A C D E
(B C) -> A C D E
(B D) -> A C D E
(B E) -> A C D E
For map(C -> A B D E) :
(A C) -> A B D E
(B C) -> A B D E
(C D) -> A B D E
(C E) -> A B D E
For map(D -> A B C E) :
(A D) -> A B C E
(B D) -> A B C E
(C D) -> A B C E
(D E) -> A B C E
And finally for map(E -> B C D):
(B E) -> B C D
(C E) -> B C D
(D E) -> B C D

在将结果交给reducer进行reduce前,我们先把以上值进行分组(group):
(A B) -> (A C D E) (B C D)
(A C) -> (A B D E) (B C D)
(A D) -> (A B C E) (B C D)
(B C) -> (A B D E) (A C D E)
(B D) -> (A B C E) (A C D E)
(B E) -> (A C D E) (B C D)
(C D) -> (A B C E) (A B D E)
(C E) -> (A B D E) (B C D)
(D E) -> (A B C E) (B C D)

再进行reduce,这个reduce方法就是取两个集合中的交集。比如reduce((A B) -> (A C D E) (B C D))将输出(A B) : (C D),这意味着A和B的共同朋友有C和D。
(A B) -> (C D)
(A C) -> (B D)
(A D) -> (B C)
(B C) -> (A D E)
(B D) -> (A C E)
(B E) -> (C D)
(C D) -> (A B E)
(C E) -> (B D)
(D E) -> (B C)
当D访问B的主页时,我们可以迅速的查询键值为(B D)对应的值,即(A C E)。


参考:
维基百科MapReduce主页 https://en.wikipedia.org/wiki/MapReduce





分享到:
评论

相关推荐

    大数据在计算机信息处理技术中的运用探究.zip

    例如,在社交媒体分析中,通过抓取和分析用户的言论和互动,可以了解公众舆论,为政策制定和品牌管理提供依据。在智能交通系统中,实时收集车辆位置、速度等数据,可预测交通流量,优化路线规划,减少拥堵。在医疗...

    刍议大数据技术在智慧城市中的运用.zip

    大数据技术在智慧城市中的运用 智慧城市,作为现代城市发展的新形态,是通过信息技术手段,特别是大数据技术,实现城市管理、服务和生活的智能化。大数据技术是智慧城市的核心驱动力,它为城市的智慧化提供了海量...

    Hadoop课件,总共有十张PPT

    在大数据背景下,Hadoop的应用场景广泛,如日志分析、推荐系统、社交媒体分析等。学习Hadoop,开发者可以处理PB级别的数据,解决传统数据库无法应对的挑战。 此外,Hadoop与云计算的结合也是当今热门话题,如在...

    大数据技术在计算机信息管理中的运用分析.zip

    这包括网络日志、社交媒体、物联网设备等多种渠道产生的数据。通过各种传感器、API接口和爬虫工具,可以实时获取并整合这些数据,为后续分析提供基础。 2. 数据存储:大数据的海量特性使得传统数据库无法胜任,因此...

    2018大数据资料(一套全)

    在大数据场景中,Flume可以从各种数据源(如网络服务器、社交媒体等)高效地收集数据,然后将数据传输到Hadoop或其它存储系统。 6. **Oozie**:Apache Oozie是Hadoop的工作流调度器,它可以管理和协调Hadoop生态...

    大数据与Hadoop67.pptx

    Facebook、淘宝、Twitter等社交媒体和电子商务平台,以及移动互联网、物联网和金融、电信等行业,都产生了海量的数据,这些数据的处理和分析催生了各种基于Hadoop的大数据产品和服务。 在大数据时代,数据量的增长...

    R and Hadoop

    这些努力使得R语言不仅在统计和预测分析领域保持了领先,也在大数据、可视化、社交媒体、政府等领域广泛应用。其产品之所以得到超过200万用户的青睐,部分原因是因为其比商业替代品具有更高的性价比,以及其产品线的...

    大数据技术概况qy.pptx

    随着社交媒体、移动设备等技术的发展,非结构化数据的占比越来越大,据估计已经达到数据总量的75%左右,并且这一比例还在不断上升。 #### 二、大数据的关键技术 处理大数据的技术主要包括以下几个方面: - **大...

    大数据课堂作业3.docx

    1. **数据采集**:在大数据环境中,数据来源广泛,包括社交媒体、传感器、日志文件等。常用的数据采集工具和方法有网络爬虫(如Python的Scrapy框架)、API接口调用、数据库导出等。 2. **数据清洗**:数据清洗是...

    Hadoop大数据分析与挖掘实战

    最后,可能会有一些实际的案例研究,展示Hadoop在电商、社交媒体分析、金融风控等领域的真实应用,帮助读者更好地理解和应用所学知识。 总而言之,《Hadoop大数据分析与挖掘实战》是一本全面覆盖Hadoop技术及其在...

    数据处理生命周期与大数据专业就业岗位研究.zip

    这涉及到从各种来源获取数据,如传感器、社交媒体、交易记录等。在这个阶段,关键在于选择合适的数据源,并确保数据的质量和完整性。数据采集工具和技术,如网络爬虫、API接口、日志文件分析等,都是这个环节中重要...

    大数据职业发展方向.pdf

    在数据采集阶段,各种设备和传感器源源不断地产生数据,这些数据可能来自不同的源头,如物联网、移动设备、社交媒体等。预处理则涉及数据清洗和转换,以便于后续的分析。统计和分析环节运用各种算法和工具,如Hadoop...

    大数据时代计算机信息处理技术探讨 (1).zip

    这些数据来源于互联网、物联网、社交媒体、交易记录等多个方面,具有巨大的潜在价值。 2. 大数据的四个V特性:大数据的主要特征通常概括为4个V,即Volume(大量)、Velocity(高速)、Variety(多样)和Value(价值...

    竞赛背景下大数据人才培养路径思考.zip

    这些数据来源于社交媒体、物联网设备、在线交易等多种渠道,具有巨大的潜在价值。 在竞赛背景下,大数据的应用主要体现在数据挖掘、预测分析和决策支持等方面。例如,在数据分析竞赛中,参赛团队需要利用大数据技术...

    大数据分析解决策划方案.docx

    4. **自然语言处理**:由于大数据来源广泛,包括文本、新闻、社交媒体等,因此,掌握至少一种自然语言处理工具对于解析非结构化数据至关重要。 5. **数据可视化**:使用如Tableau、PowerBI等数据可视化工具,有助于...

    大数据技术原理与应用.rar

    8. **大数据应用领域**:大数据广泛应用于电商推荐系统、金融风控、医疗健康、智慧城市、社交媒体分析等多个领域,通过数据分析提升业务决策效率和用户体验。 9. **大数据安全与隐私**:大数据处理涉及大量的个人和...

    大数据与统计学(PPT50页).ppt

    例如,大数据的多样性(Variety)要求统计分析方法能够处理非结构化和半结构化的数据,如文本、图像和社交媒体数据。为此,统计学引入了文本挖掘、图像分析和网络分析等技术。大数据的高速性(Velocity)则推动了...

    大数据技术与应用习题答案第1-2章.pdf

    这些数据来源于各种渠道,包括互联网、传感器网络、社交媒体、物联网设备等,它们通常包含结构化、半结构化和非结构化的数据。 大数据的影响深远,它已经推动了全球数字经济的发展。例如,法国政府对大数据的投资...

    基于大数据的IT人才需求信息爬取方法与实现.zip

    通过编写特定的Python爬虫程序(如使用Scrapy框架),可以自动抓取招聘网站、社交媒体、技术论坛等平台上的IT职位信息,包括岗位名称、技能需求、薪资范围等。 2. 数据清洗与预处理:抓取到的数据通常包含噪声和不...

Global site tag (gtag.js) - Google Analytics