java - 使用 getter/setter 方法将 java 对象包装/解包为 Writable 对象是个好主意吗?

标签 java hadoop mapreduce

更具体地说,在 hadoop MapReduce 程序中,如果您使用自定义类,则该类需要实现 Writable 接口(interface)。并且它的所有成员都需要是可写的,例如

class WeatherData implements Writable{
     Text stationId;
     LongWritable timestamp;
     IntWritable temperature;

}

但由于 Text、LongWritable、IntWritable 等类是原始数据类型的可写包装类。您不能对它们进行常规操作,例如算术运算或字符串操作等。

具有 getter setter 方法,例如
 public String getStationId(){
     return this.stationId.toString();
 }

 public void setStationId(String stationID){
     this.stationId = new Text(stationID);
 }

将是有益的,因为外部世界可以将这些成员视为常规 Java 类,但在内部它们将存储为可写类的对象。

我的问题是这是否是良好的编码实践。使用这种 getter/setter 方法有哪些潜在的陷阱?

最佳答案

对我来说,这似乎不是一个好习惯。看看Writable Interface Documentation .您真正需要做的就是实现 readFields()write()方法。 (您的类(class)成员不需要自己是可写的 - 请参阅文档中的示例。)

关于java - 使用 getter/setter 方法将 java 对象包装/解包为 Writable 对象是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38231421/

相关文章:

java - 如何创建子类,使其属性值不会被父类覆盖?

hadoop - 等效YARN MRv2 JobClient

java - Hadoop 中的文件 ID

hadoop - Hadoop 中的 VIRTUAL_MEMORY_BYTES 任务计数器是什么意思?

JAVA:与实例引用混淆

java - 在 mimemessage 中添加 "addinline"函数时出现 NullPointerException

java - Apache Nutch将抓取的文档写入Rabbitmq

hadoop - 从属机器上的数据节点已打开,但命令 "hdfs hdfsadmin -report"会引发错误?

Python:使用 yelps MRJOB 增加 EMR 中的超时值

java - Universal Tween Engine 中的时间控制