IntWritable を使用する代わりに、カスタム書き込み可能を実装しようとしました。その背後にある理由は、値のペアが必要だからです。特に、次のことを達成したいと考えています: user_id;counter;length_of_messages;
入力ファイルの種類は次のとおりです。
user_id;time_stamp;length_of_messages
出力ファイルは、情報を集約する必要があります
user_id;counter;length_of_messages
意味的には、特定の期間 (たとえば 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を読み、目的に合わせて例を変更しました。しかし、今はクラスをコンパイルできません。