我看到Hadoop中的Configuration类是可写的http://hadoop.apache.org/docs/current/api/org/apache/hadoop/conf/Configuration.html。然而,我没有看到它公开的任何方法可以用来添加可写对象(我看到很多方法可以设置和获取基本类型,如int、long)。比如说,我有自己的可写对象我想把它添加到所有映射器和简化器的配置中,我该怎么做?
谢谢,
Venkat
这个配置实际上不是用来传递整个对象的。该配置应该更多地用于设置mapper/Reducers设置所需的简单参数。当您在作业开始时设置变量时,请考虑配置文件。如果您在运行配置的过程中进行了更改,那么它很可能不会在最后存在,因为它实际上并不意味着动态传递数据。
如果你想在节点之间传递整个对象,你正在寻找的是分布式缓存。从技术上讲,这些都是文件,但是您可以使用标准对象序列化来添加它们。关于分布式缓存。
*抱歉链接不同的hadoop版本,他们的页面有点混乱,很难找到你需要的东西。
您可以查看HBase源代码(从HBase 0.94.6开始)MultiTableInputFormat.setConf()
类方法和适当的TableMapReduceUtil
代码(例如.initTableMapperJob()
)。它们通过配置传递Scan
对象。早期的TableInputFormat.setConf()
类使用非常相似的机制。通常只有最小的属性通过config传递,但这可能是更接近你的情况。