Java 关于Hadoop中的序列化:序列化的优点是什么?

Java 关于Hadoop中的序列化:序列化的优点是什么?,java,serialization,hadoop,mapreduce,Java,Serialization,Hadoop,Mapreduce,我对Hadoop数据流中的序列化有点困惑。假设我有一个定义如下的Java对象(该对象可能比我所展示的要复杂得多): 要在映射器和还原器之间传输此对象的实例,有两种方法: 第一种方法-我可以在mapper中逐个序列化int字段和String字段并将它们写入输出,然后在Reducer中读取它们并使用这些值创建一个新的MyObject实例。假设新创建的实例与原始实例没有差异 第二种方法-我可以重写MyObject来实现Writable接口,并在映射器中序列化整个实例。然后在reducer中,我只需要反

我对Hadoop数据流中的序列化有点困惑。假设我有一个定义如下的Java对象(该对象可能比我所展示的要复杂得多):

要在映射器和还原器之间传输此对象的实例,有两种方法:

第一种方法-我可以在mapper中逐个序列化int字段和String字段并将它们写入输出,然后在Reducer中读取它们并使用这些值创建一个新的
MyObject
实例。假设新创建的实例与原始实例没有差异

第二种方法-我可以重写
MyObject
来实现
Writable
接口,并在映射器中序列化整个实例。然后在reducer中,我只需要反序列化对象,就可以使用它了


这两种方法的区别是什么?在传输对象之前序列化对象有什么好处。

Hadoop
可写
与Java序列化程序相比更紧凑,所需空间更少。Hadoop映射器和还原器处理扩展Hadoop可写接口的对象。有关更多详细信息,请参见

这看起来与您的另一个问题相同@Tariq我先问了这个问题,然后问了一个更具体的问题。但事实上他们是不同的。我没有注意到时间。请不要介意。我说过它“看起来一样”而不是“一样”。@Tariq谢谢你的注意。:-)你能回答这个问题吗?你问题的第一部分包含在另一个问题中。对于第二部分,在传输对象之前对其进行序列化可以使其在传输时更加网络友好,占用更少的空间,提供更好的随机访问,并提供更高的性能。@Denzel如果您满意,请向上投票并接受答案
public void MyObject {

  private int Field1;
  private String Field2;

  public void method1() {

  }

  ...

}