【问题标题】:How to sort data in map reduce hadoop?如何在map reduce hadoop中对数据进行排序?
【发布时间】:2013-05-06 15:49:15
【问题描述】:

我正在使用一个包含 4 个 MapReduce 步骤的程序。我第一步的输出是:

id      value
 1        20
 2         3
 3         9
 4        36

我有大约 1,000,000 个 ID,在第二步中我必须对值进行排序。这一步的输出:

 id      value
 4        36
 1        20
 3         9
 2         3

如何在 map reduce 中对数据进行排序?我需要使用 terasort 吗?如果是,我如何在程序的第二步中使用 terasort? 谢谢。

【问题讨论】:

  • 4 个 mapreduce 步骤是什么意思?您正在运行 Map Step 和 Reduce 步骤 4 次?如果您正在编写 MapReduce 程序,那么您可以控制 Map Step 和 Reduce 步骤。
  • @prashantsunkari 不,我有 4 个步骤,每个步骤都有一个 map 和一个 reduce 函数。每一步做不同的工作。第二步必须对第一步的输出进行排序。
  • mapreduce 的最大优势之一是它根据您的密钥对数据进行排序。你想按什么排序?
  • @smttsp 根据值。

标签: sorting hadoop mapreduce


【解决方案1】:

如果你想按照value's排序,就让它key in map函数。即

id      value
1        20
2         3
3         9
4        36
5         3

(value)(key)在map函数中

output will be 

key      value
3         5
3         2
9         3
20        1
36        4

map<value, id> output key/value  
reduce <value, id>

如果您希望 id 位于第一列,这将起作用。

context.write(value, key);

请注意,id 不会被排序

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-19
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多