更具体地说,在hadoopmapreduce程序中,如果您使用自定义类,则该类需要实现可写接口。它的所有成员都必须是可写的。
class WeatherData implements Writable{
Text stationId;
LongWritable timestamp;
IntWritable temperature;
}
但由于text、longwritable、intwritable等类是用于原始数据类型的可写 Package 类。你不能对它们进行常规的操作,比如算术运算或字符串操作等。
有getter setter方法,比如
public String getStationId(){
return this.stationId.toString();
}
public void setStationId(String stationID){
this.stationId = new Text(stationID);
}
这将是有益的,因为外界可以将这些成员视为常规java类,但在内部,它们将作为可写类的对象存储。
我的问题是这是否是一个好的编码实践。拥有这样的getter/setter方法有哪些潜在的陷阱?
1条答案
按热度按时间ewm0tg9j1#
对我来说,这似乎不是一个好的做法。请看一下可写接口文档。你真正需要做的就是实现
readFields()
以及write()
方法(您的类成员本身不需要是可写的—请参阅文档中的示例。)