2

MapReduce 用于传递和发出键值对的基本信息。我需要一点点清楚我们通过什么以及发出什么。这是我的担忧:MapReduce 输入和输出:

1.Map() 方法——它需要单个键值对还是键值对列表并发出什么?2.对于每个输入键值对,映射器发出什么?相同类型还是不同类型?3.对于每个中间键,reducer 会发出什么?有类型限制吗?4.Reducer 接收与相同键关联的所有值。这些值将如何排序,如排序或轨道排序?该顺序是否因运行而异?5.在 shuffle 和 sort 阶段,键和值的呈现顺序是什么?

4

2 回答 2

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

值在步骤 2 中任意排序。键、值 - 映射器和化简器的输出应该是相同类型,即所有键必须是相同类型,所有值必须是相同类型。

于 2014-01-01T16:08:35.403 回答
0

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

Reducer 方法:在 mapper 的输出被正确打乱后(相同的 key 进入相同的 reducer),reducer 的输入为 (K2, LIST(V2)),其输出为 (K3,V3)。作为 shuffle 过程的结果,key 到达了由 key K2 排序的 reducer。

如果您想以您的特定方式对键进行排序,您可以实现键 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.
于 2012-09-07T13:42:30.830 回答