我有一些数据从减速器出来,像这样:
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
应由同一减速机处理。
我应该在hadoop上放什么选项?
提前感谢!
在job的默认配置中,第一列是来自reducer的结果的键,第二列是值。为了产生结果,reducer处理所有具有相同键的记录。因此,在您的情况下,您需要运行一个额外的mapreduce作业。映射将把第二列作为键,第一列作为值。此工作将根据您的要求分组数据。但是,如果结果是数据量很小,则每个作业只设置一个reducer。