MapReduce Input / OutPut为每个键值对发出

时间:2012-09-07 03:32:39

标签: mapreduce

MapReduce传递和发出键值对的基本信息。 我需要清楚一点,我们传递的内容和发出的内容。 在这里我的担忧: MapReduce输入和OutPut:

1.Map()方法 - 是否需要单个或列表的键值对并发出什么? 2.对于每个输入键值对,映射器发出什么?相同类型或不同类型? 3.对于每个中间键,减速器将发出什么?是否有任何类型的限制? 4.Reducer接收与相同密钥相关联的所有值。如何按顺序排序或按顺序排序值?该订单是否因运行而异? 5.在随机和排序阶段,在哪个顺序键和值出现?

2 个答案:

答案 0 :(得分:5)

  • 对于每个输入k1,v1映射发出零或更多k2,v2。
  • 每个k2减速机接收k2,列出(v1,v3,v4 ..)。
  • 对于每个输入k2,list(v)reducer可以发出零或更多k3,v3。

在步骤2中任意排序值。 键,值 - mapper和reducer的输出应该是相同的类型,即所有键必须是相同的类型,并且所有值必须是相同的类型。

答案 1 :(得分:0)

Map方法:接收输入(K1,V1)并返回(K2,V2)。也就是说,输出键和值可以与输入键和值不同。

减速器方法:在映射器的输出正确混洗后(同一个键进入相同的减速器),减速器输入为(K2,LIST(V2)),其输出为(K3,V3)。 作为洗牌过程的结果,密钥到达按密钥K2排序的减速器。

如果您想以特定方式订购密钥,可以实现密钥K3的compareTo方法。

Referring your questions:

1. Answered above.
2. You can emit whatever you want as long it consists of a key and a value. 
   For example, in the WordCount you send as key the word and as value 1.
3. In the WordCount example, the reducer will receive a word and list of number. 
   Then, it will sum up the numbers and emit the word and its sum.
4. Answered above.
5. Answered above.