如何将客户端中的对象传递给Map和Reduce?

时间:2011-10-27 08:11:14

标签: java hadoop mapreduce

该类应该扩展ObjectWritable类吗?那么如何将它从客户端传递到Map和Reduce呢?感谢

1 个答案:

答案 0 :(得分:3)

我认为您的意思是将客户端代码中的对象传递给Mappers和Reducers?

你必须使用某种形式的序列化来做到这一点,因为数据是通过网络进行的。根据您的情况,有几种可能性:

  1. 可能最好的解决方案是在Mappers / Reducers中实例化对象。要传递构造函数调用所需的信息,可以使用作业配置。

    conf.setInt("foo", 32);
    conf.set("bar", "bazz");
    
  2. 如果您的对象是可序列化的并且非常小,您可以对其进行序列化并在JobConf中包含它的base64编码版本。

  3. 如果序列化对象很大,您可以使用分布式缓存:http://hadoop.apache.org/common/docs/r0.20.2/mapred_tutorial.html#DistributedCache