【发布时间】:2016-06-13 12:02:14
【问题描述】:
我有一个 MapReduce 程序(在 Java 中),它查找文档中的字数并将输出存储为:
word1 10
word2 20
...
我想知道如何在最终输出的末尾添加几行(类似于 try 和 catch 的 finally 块),即我想在最终输出中添加几个单词及其分数.
所以我的问题是,有没有办法添加一段在 reducer 执行后运行的代码,以便我可以在整个 Map & Reduce 完成后做一些事情?
【问题讨论】:
-
你的 reducer 总是可以根据需要输出额外的行,我不确定是否有一种通用的方式可以说“完成后,对刚刚编写的文件做一些其他的事情”
-
@cricket_007 你能给我举个例子吗?我没有在任何地方看到过,但我想在我的应用程序中这样做。
-
什么例子?
context.write应该已经存在于你的 reducer 中。我说我不确定是否有办法 -
如果你只有一个reducer,你可以尝试追加到上下文中。 wordCount 有很多 reducer,所以我认为您必须在驱动程序端执行此操作。
-
或者,让您的整个工作流程保持原样,然后创建一个辅助 mapreduce 读取该输出并进行聚合计算(假设这是您要查找的内容),然后写入其自己的文件(因为否则你会得到一个输出目录已经存在的错误)