4

Hadoop MapReduce では、中間出力 (map() によって生成される) の場合、中間出力の値を次のオブジェクトにする必要があります。


MyObject{
  date:Date
  balance:Double
}

どうすればこれを行うことができますか。独自の書き込み可能なクラスを作成する必要がありますか?

私は MapReduce の初心者です。

ありがとう。

4

1 に答える 1

8

マッパー値として発行できるカスタムタイプを作成できます。ただし、値として発行するものは何でも、書き込み可能なインターフェイスを実装する必要があります。次のようなことができます:

public class MyObj implements WritableComparable<MyObj>{

    private String date;
    private Double balance;

    public String getDate() { return date;}
    public Double getBalance() { return balance;}

    @Override
    public void readFields(DataInput in) throws IOException {

        //Define how you want to read the fields
        }
    @Override
    public void writeFields(DataOutput out) throws IOException {

        //Define how you want to write the fields
    }
        .......
        .......
        .......

}

または、Avro シリアライゼーション フレームワークを利用することもできます。

于 2012-12-14T11:20:59.390 に答える