如何将 Mapper 中收集的少量元数据传递给 Reducer?在我的具体问题中,我只想传递两个长值,所以我不会为这些使用MultipleOutputFormat或MultipleOutputs。
我尝试过的一些变体:
(1)
映射器
context.getCounter("Countergroup", "Counter").increment(1);
减速器
counter = context.getCounter("Countergroup", "Counter").getValue();
计数器不会定期更新,因此 Reducer 中的函数调用会产生 0 值。
(2)
映射器
context.getConfiguration().setInt("Counter", countTotal);
减速器
counter = context.getConfiguration().getInt("Counter", 0);
当然,在运行作业期间无法更改配置(值得尝试)。
已经有关于这个问题的问题,但我找不到有效的答案。此外,API 也发生了变化。我正在使用 Hadoop 0.20.2 。
类似的问题:
从 reducer 访问映射器的计数器 (这看起来很有希望,但似乎它不适用于 0.20.2 API)