Выходные данные примера количества слов Hadoop MapReduce сортируются по ключу. Таким образом, вывод должен быть в алфавитном порядке.
С помощью Hadoop вы можете создавать свои собственные ключевые объекты, которые реализуют интерфейс WritableComparable
, позволяя переопределять метод compareTo
. Это позволяет контролировать порядок сортировки.
Чтобы создать вывод, отсортированный по количеству вхождений, вам, вероятно, придется добавить еще одно задание MapReduce для обработки вывода из первого, как вы сказали. Эта вторая работа будет очень простой, возможно, даже не потребует фазы сокращения. Вам просто нужно реализовать свой собственный ключевой объект Writable
, чтобы обернуть слово и его частоту. Пользовательская запись выглядит примерно так:
public class MyWritableComparable implements WritableComparable {
// Some data
private int counter;
private long timestamp;
public void write(DataOutput out) throws IOException {
out.writeInt(counter);
out.writeLong(timestamp);
}
public void readFields(DataInput in) throws IOException {
counter = in.readInt();
timestamp = in.readLong();
}
public int compareTo(MyWritableComparable w) {
int thisValue = this.value;
int thatValue = ((IntWritable)o).value;
return (thisValue < thatValue ? -1 : (thisValue==thatValue ? 0 : 1));
}
}
Я взял этот пример из здесь а>.
Вероятно, вам также следует переопределить hashCode
, equals
и toString
.
person
Binary Nerd
schedule
06.04.2010