gpt4 book ai didi

sorting - 使用 Hadoop MapRed 排序

转载 作者:可可西里 更新时间:2023-11-01 14:24:55 25 4
gpt4 key购买 nike

嗯,

我想知道如何在 reduce 任务之后更改我的简单 WordCount 程序的排序顺序?我已经制作了另一个按值而不是键排序的 map ,但它仍然按升序排序。有没有一种简单的方法可以做到这一点(更改排序顺序)?!

谢谢韦洛佐

最佳答案

如果您使用的是较旧的 API (mapred.*),则在作业 conf 中设置 OutputKeyComparatorClass:

jobConf.setOutputKeyComparatorClass(ReverseComparator.class);

ReverseComparator 可以是这样的:

static class ReverseComparator extends WritableComparator {
private static final Text.Comparator TEXT_COMPARATOR = new Text.Comparator();

public ReverseComparator() {
super(Text.class);
}

@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
try {
return (-1)* TEXT_COMPARATOR
.compare(b1, s1, l1, b2, s2, l2);
} catch (IOException e) {
throw new IllegalArgumentException(e);
}
}

@Override
public int compare(WritableComparable a, WritableComparable b) {
if (a instanceof Text && b instanceof Text) {
return (-1)*(((Text) a)
.compareTo((Text) b)));
}
return super.compare(a, b);
}
}

在新 API (mapreduce.*) 中,我认为您需要使用 Job.setSortComparator()方法。

关于sorting - 使用 Hadoop MapRed 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com