将可写对象添加到Hadoop配置

时间:2013-05-20 03:21:40

标签: java hadoop mapreduce

我看到Hadoop中的Configuration类是可写的http://hadoop.apache.org/docs/current/api/org/apache/hadoop/conf/Configuration.html。但是,我没有看到任何可以用来添加可写对象的方法(我看到很多方法来设置和获取像int,long这样的基本类型)。让我们说,我有自己的可写对象,我想将它添加到我的所有映射器的配置中并减少使用,我该怎么做?

谢谢,

Venkat

2 个答案:

答案 0 :(得分:1)

配置实际上不适用于传递整个对象。配置应该更多地用于设置Mappers / Reducers设置所需的简单参数。在作业开始时设置变量时,请考虑conf。如果您在运行过程中对配置进行更改,则最有可能不会在最后进行更改,因为它实际上并不意味着动态传递数据。

如果要在节点之间传递整个对象,请查找的是Distributed Cache。从技术上讲,这些是文件,但您可以使用标准对象序列化来添加它们。 About the Distributed Cache

*为链接不同的hadoop版本道歉,他们的页面有点混乱,很难找到你需要的东西。

答案 1 :(得分:1)

您可以检查HBase源(从HBase 0.94.6开始)MultiTableInputFormat.setConf()类方法和相应的TableMapReduceUtil代码(例如.initTableMapperJob())。它们通过配置传递Scan个对象。早期TableInputFormat.setConf()类使用非常相似的机制。 通常只有最小的属性通过配置传递,但这可能更接近您的情况。

希望它会有所帮助。