Hadoop - 按键和按减速器分组正确排序

时间:2015-10-25 04:23:12

标签: sorting hadoop mapreduce mapper

我有一些来自reducer的数据,如下所示:

9,2    3
5,7    2
2,3    0
1,5    3
6,3    0
4,2    2
7,1    1

我想根据第二栏的数字对它们进行排序。像这样:

2,3    0
6,3    0
7,1    1
5,7    2
4,2    2
1,5    3
9,2    3

当我在本地运行程序时,我使用:

sort -k2,2n

但我不知道如何在Hadoop上做同样的事情。我已经尝试了几个不起作用的选项,例如:

-D mapreduce.partition.keycomparator.options=-k2,2n

而且,我希望所有具有相同密钥的数据都在同一个reducer上。 所以在这种情况下:

2,3   0

6,3   0

应该由同一个reducer处理。

我应该选择hadoop选项的任何想法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

在作业的默认配置中,第一列是reducer的结果键,第二列是值。为了产生结果,reducer正在处理具有相同键的所有记录。因此,在您的情况下,您需要运行额外的mapreduce作业。地图将第二列作为键,第一列作为值。此作业将根据您的请求对数据进行分组。但是,如果您的数据量很少,则每个作业只设置一个reducer -D mapred.reduce.tasks = 1.