更具体地说,在hadoop MapReduce程序中如果使用自定义类,则该类需要实现Writable接口。并且其所有成员都需要可写,例如。
class WeatherData implements Writable{
Text stationId;
LongWritable timestamp;
IntWritable temperature;
}
但是因为Text,LongWritable,IntWritable等类是原始数据类型的Writable包装类。你不能像算术运算或字符串操作那样对它们进行常规操作。
使用getter setter方法,如
public String getStationId(){
return this.stationId.toString();
}
public void setStationId(String stationID){
this.stationId = new Text(stationID);
}
将是有益的,因为外部世界可以将这些成员视为常规java类,但在内部它们将被存储为可写类的对象。
我的问题是它是否是良好的编码实践。使用这种getter / setter方法有什么潜在的陷阱?
答案 0 :(得分:0)
这对我来说似乎不是一个好习惯。看看Writable Interface Documentation。您真正需要做的就是实现readFields()
和write()
方法。 (您的班级成员不需要自己写作 - 请参阅文档中的示例。)