【问题标题】:MapReduce Input/OutPut emits for each key value pairMapReduce Input/OutPut 为每个键值对发出
【发布时间】:2012-08-31 22:31:33
【问题描述】:

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

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

【问题讨论】:

    标签: mapreduce


    【解决方案1】:

    Map 方法:接收作为输入 (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.
    

    【讨论】:

    • 我的理解是 1.它接受单个键值对作为输入,并且可以发出任意数量的键值对作为输出,包括零。 2.对于每个键/值pari,它们会根据需要发出尽可能多的中间键/值对,并且不能是相同的类型。 3.Reducer 根据需要发出尽可能多的最终键值对。 4.Values 是按轨道排列的,而且顺序非常从运行到运行。那是对的吗 ?如果我错了,请告诉我。
    • 在随机播放阶段,值不是按顺序排列或升序排列的吗?
    • 值未排序。只有钥匙。
    【解决方案2】:
    • 对于每个输入 k1,v1 映射发出零个或多个 k2,v2。
    • 对于每个 k2 reducer 接收 k2,list(v1,v3,v4..)。
    • 对于每个输入 k2,list(v) reducer 可以发出零个或多个 k3、v3。

    值在第 2 步中任意排序。 Key, value - mapper 和 reducer 的输出应该是相同的类型,即所有的 key 必须是相同的类型,所有的 value 必须是相同的类型。

    【讨论】:

      猜你喜欢
      • 2014-02-23
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2016-05-26
      • 2020-05-12
      • 2011-08-03
      相关资源
      最近更新 更多