更具体地说,在hadoop的MapReduce程序中,如果你使用的是自定义类,那么该类需要实现Writable接口。 并且它的所有成员都需要是可写的,例如
class WeatherData implements Writable{
Text stationId;
LongWritable timestamp;
IntWritable temperature;
}
但是由于 Text、LongWwritetable、IntWriable 等类是基元数据类型的可写包装类。您不能对它们进行常规操作,例如算术运算或字符串操作等。
拥有吸气器设置器方法,例如
public String getStationId(){
return this.stationId.toString();
}
public void setStationId(String stationID){
this.stationId = new Text(stationID);
}
这将是有益的,因为外部世界可以将这些成员视为常规 Java 类,但在内部它们将存储为可写类的对象。
我的问题是这是否是良好的编码实践。 拥有这样的吸气/设置方法有哪些潜在的陷阱?
这对我来说似乎不是一个好习惯。查看可写接口文档。您真正需要做的就是实现readFields()
和write()
方法。(您的类成员本身不需要是可写的 - 请参阅文档中的示例。