【问题标题】:About Serialization in Hadoop: what are the advantages of serialization?关于 Hadoop 中的序列化:序列化的优点是什么?
【发布时间】:2013-05-26 00:42:11
【问题描述】:

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

public void MyObject {

  private int Field1;
  private String Field2;

  public void method1() {

  }

  ...

}

要在 mapper 和 reducer 之间传输这个对象的实例,有两种方法:

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

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

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

【问题讨论】:

  • 这看起来和你的其他问题一样stackoverflow.com/questions/16836607/…
  • @Tariq 我先问这个,然后我问了一个更具体的问题。但实际上它们是不同的。
  • 我没有注意到时间。请不要介意。我说过它“看起来一样”而不是“一样”。
  • @Tariq 感谢您的关注。 :-) 你能回答这个问题吗?
  • 您问题的第一部分已在另一个问题中介绍。对于第二部分,在传输之前序列化一个对象,使其在传输时更加网络友好,消耗更少的空间,提供更好的随机访问并为您提供更高的性能..

标签: java serialization hadoop mapreduce


【解决方案1】:

与 Java 可序列化相比,Hadoop Writable 更紧凑,所需空间更少。 Hadoop 映射器和化简器处理扩展 Hadoop 的Writable 接口的对象。更多详情请见https://stackoverflow.com/a/16839597/1150329

【讨论】:

  • @Denzel 如果您满意,请点赞并接受答案
猜你喜欢
  • 1970-01-01
  • 2012-05-18
  • 2011-03-20
  • 2011-02-25
  • 2018-11-10
  • 2010-10-08
  • 1970-01-01
  • 2010-10-12
相关资源
最近更新 更多