public static void main(String[] args) {
int exitCode = ToolRunner.run(new YourDriver(), args);
System.exit(exitCode);
}
//this class is defined outside of main not inside
public static class DescendingIntWritableComparable extends IntWritable {
/**A decreasing Comparator optimized for IntWritable. */
public static class DecreasingComparator extends Comparator {
public int compare(WritableComparable a, WritableComparable b) {
return -super.compare(a, b);
}
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
return -super.compare(b1, s1, l1, b2, s2, l2);
}
}
}
1条答案
按热度按时间zujrkrfu1#
您可能可以这样做(我假设您在这里使用java)
从Map上发出这样的声音-
因此,所有需要排序的值都应该是mapreduce工作中的关键。默认情况下,hadoop按键的升序排序。
因此,要么按降序排序,
或者,这个,
您需要设置一个自定义降序排序比较器,在您的工作中类似于这样。
hadoop中的suffle和sort阶段将负责按降序24、4、12、23对密钥进行排序
评论之后:
如果您需要一个降序的可写可比文件,您可以创建一个并像这样使用它-
如果您使用的是jobconf,请使用以下命令设置
把下面的代码放在你的下面
main()
功能-