我从减速机中得到了一些数据如下:
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
而且,我希望所有具有相同密钥的数据都放在同一个减速机上。所以在这种情况下:
2,3 0
和
6,3 0
应采用相同的减速机加工。
有没有关于hadoop的建议?
提前谢谢!
1条答案
按热度按时间toiithl61#
在作业的默认配置中,第一列是result from reducer的键,第二列是值。为了产生结果,reducer使用相同的键处理所有记录。因此,在您的情况下,您需要运行一个额外的mapreduce作业。Map将第二列作为键,第一列作为值。此作业将根据您的请求对数据进行分组。但是,如果您的数据量很小,那么每个作业只能设置一个reducer—d mapred.reduce.tasks=1。