0

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を読み、目的に合わせて例を変更しました。しかし、今はクラスをコンパイルできません。

4

0 に答える 0