如何在Hadoop MapReduce中将Object设置为Map输出的值?

sha*_*lpk 4 java hadoop mapreduce distributed-computing hdfs

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


MyObject{
  date:Date
  balance:Double
}
Run Code Online (Sandbox Code Playgroud)

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

我是MapReduce的新手.

谢谢.

Tar*_*riq 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
    }
        .......
        .......
        .......

}
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用Avro序列化框架.