【发布时间】:2012-12-02 08:38:21
【问题描述】:
在 Hadoop MapReduce 中,对于中间输出(由 map() 生成),我希望中间输出的值是以下对象。
MyObject{
date:Date
balance:Double
}
我该怎么做。我应该创建自己的可写类吗?
我是 MapReduce 的新手。
谢谢。
【问题讨论】:
标签: java hadoop mapreduce distributed-computing hdfs
在 Hadoop MapReduce 中,对于中间输出(由 map() 生成),我希望中间输出的值是以下对象。
MyObject{
date:Date
balance:Double
}
我该怎么做。我应该创建自己的可写类吗?
我是 MapReduce 的新手。
谢谢。
【问题讨论】:
标签: java hadoop mapreduce distributed-computing hdfs
您可以编写您可以作为映射器值发出的自定义类型。但是无论你想作为值发出什么,都必须实现可写接口。你可以这样做:
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 序列化框架。
【讨论】: