hadoop—使用getter/setter方法将java对象 Package /展开为可写对象是个好主意吗?

gab6jxml  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(293)

更具体地说,在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方法有哪些潜在的陷阱?

ewm0tg9j

ewm0tg9j1#

对我来说,这似乎不是一个好的做法。请看一下可写接口文档。你真正需要做的就是实现 readFields() 以及 write() 方法(您的类成员本身不需要是可写的—请参阅文档中的示例。)

相关问题