我尝试实现自定义可写而不是使用IntWritable。其背后的原因是我希望拥有一对价值观。特别是我想实现以下目标: USER_ID;计数器; length_of_messages;
输入文件有以下几种:
USER_ID; TIME_STAMP; length_of_messages
输出文件应该聚合信息
USER_ID;计数器; length_of_messages
从语义上讲,我通过汇总本周写入消息的次数以及本周消息长度的总和来获取给定periond(例如1周)的用户统计信息。
public class ValuesWritable implements Writable {
private int counter;
private int durations;
public void write (DataOutput out) throws IOException{
out.writeInt(counter);
out.writeInt(durations);
}
public void readFields(DataInput in) throws IOException{
counter = in.readInt();
durations = in.readInt();
}
public ValuesWritable read(DataInput in) throws IOException{
ValuesWritable v = new ValuesWritable();
v.readFields(in);
return v;
}
}
我在mapreduce作业类中将此类作为内部类包含在内。我现在的问题是:我如何与这个类接口?我从哪里获得DataOutput和DataInput?我阅读了教程http://developer.yahoo.com/hadoop/tutorial/module5.html#keytypes并为我的目的修改了示例。但现在我无法编译我的课程。
感谢您的指示。