在地图和&之后运行几行降低

时间:2016-06-13 03:30:28

标签: hadoop mapreduce

我有一个MapReduce程序(用Java),它可以找到文档中的单词数,并将输出存储为:

word1 10
word2 20
...

我想知道如何在最终输出的末尾添加几行,(类似于try和catch的最后一个块),我想添加几个单词&他们的分数到最后的输出。

所以我的问题在于,是否有一种方法可以添加一段代码,该代码在执行reducer之后运行,以便我可以在整个Map&之后执行某些操作。减少完成?

1 个答案:

答案 0 :(得分:3)

一个Reducer: 如果您有一个reducer,那么您可以使用清理中的context对象来为每个单词写入排名/分数。但要执行此操作,您需要将已写入输出文件的数据(字数)。我建议你在reduce函数中添加一个Map或其他一些对象来存储单词count。在清理中使用该Map对象来查找排名/分数,并通过上下文对象写入结果。

多个Reducer: 如果你有多个reducer,那么你只需要在main / run方法中做同样的事情。但在这种情况下,您必须读取输出文件数据,然后在附加到文件之前进行计算。我建议您使用合成器并使用上面建议的减速器来计算等级/分数。