如何在Hadoop MapReduce中将对象设置为映射输出的值



在Hadoop MapReduce中,对于中间输出(由map()生成),我希望中间输出的值是以下对象。


MyObject{
  date:Date
  balance:Double
}

我会怎么做。我应该创建自己的可写类吗?

我是MapReduce的新手。

谢谢。

您可以编写自定义类型,将其作为映射器值发出。但是,无论您要作为值发出什么,都必须实现可写接口。你可以做这样的事情:

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 序列化框架。

最新更新