关于MapReduce的理解

本文通过wordcount实例详细解析了MapReduce的工作流程,包括输入、拆分、映射、派发、缩减及输出六个阶段,展示了如何处理大规模数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实我们可以从word count这个实例来理解MapReduce。

MapReduce大体上分为六个步骤:

input, split, map, shuffle, reduce, output。

细节描述如下:

 输入(input):如给定一个文档,

包含如下四行:

 Hello Java 

Hello C 

Hello Java

 Hello C++ 


拆分(split):

将上述文档中每一行的内容转换为key-value对,

即:

 0 - Hello Java 

1 - Hello C 

2 – Hello Java 

3 - Hello C++ 


3. 映射(map):

将拆分之后的内容转换成新的key-value对,

即: 

(Hello , 1) 

(Java , 1)

 (Hello , 1) 

(C , 1)

 (Hello , 1) 

(Java , 1) 

(Hello , 1) 

(C++ , 1) 


4. 派发(shuffle):

将key相同的扔到一起去,

即:

 (Hello , 1) 

(Hello , 1)

 (Hello , 1)

 (Hello , 1) 

(Java , 1)

 (Java , 1)

 (C , 1) 

(C++ , 1) 


注意:这一步需要移动数据,原来的数据可能在不同的datanode上,这一步过后,相同key的数据会被移动到同一台机器上。

最终,它会返回一个list包含各种k-value对,

即:

 { Hello: 1,1,1,1} 

{Java: 1,1} 

{C: 1}

 {C++: 1} 


5. 缩减(reduce):

把同一个key的结果加在一起。

如:

 (Hello , 4)

 (Java , 2) 

(C , 1) 

(C++,1) 


6. 输出(output): 输出缩减之后的所有结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值