我看到Hadoop中的Configuration类是可写的http://hadoop.apache.org/docs/current/api/org/apache/hadoop/conf/Configuration.html。但是,我没有看到任何可以用来添加可写对象的方法(我看到很多方法来设置和获取像int,long这样的基本类型)。让我们说,我有自己的可写对象,我想将它添加到我的所有映射器的配置中并减少使用,我该怎么做?
谢谢,
Venkat
答案 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()
类使用非常相似的机制。
通常只有最小的属性通过配置传递,但这可能更接近您的情况。
希望它会有所帮助。