Ain*_*Ari 10 parallel-processing hadoop mapreduce word-count
我对MapReduce非常陌生,我完成了一个Hadoop字数统计示例.
在该示例中,它生成单词计数的未排序文件(具有键值对).那么是否可以通过将另一个MapReduce任务与前一个任务相结合来按字出现次数对其进行排序?
Hadoop MapReduce wordcount 示例的输出按键排序。所以输出应该按字母顺序排列。
使用 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));
}
}
Run Code Online (Sandbox Code Playgroud)
我从这里抓住了这个例子。
您可能也应该重写hashCode,equals和toString。
| 归档时间: |
|
| 查看次数: |
18477 次 |
| 最近记录: |