0
在reduce()和cleanup()中执行context.write()有什么区别? 我读过某处,只有在temp_dir中的输出移动到指定的输出目录后,才会调用清理。在reducer的cleanup()中调用context.write()有什么用处
另外如何在MR作业中使用treeMap和一些例子?
在reduce()和cleanup()中执行context.write()有什么区别? 我读过某处,只有在temp_dir中的输出移动到指定的输出目录后,才会调用清理。在reducer的cleanup()中调用context.write()有什么用处
另外如何在MR作业中使用treeMap和一些例子?
减速任务有以下方法被称为是这样的:
run():
setup()
for each record:
reduce()
cleanup()
因此,大家可以看到设置()和清理()被调用一次每个减速器任务而减少()被调用每个记录(记录是关键和价值)。
在缩减器中,一次只有一个键和它的值。在清理过程中,您可以累积所有值(来自每个Reducer)并进行一些处理并发出输出。
例如:
reducer task:
setup: create a map (hash or tree)
for each reducer: store key, values in map
cleanup() : use the map and emit the key or values or both you are interested in.
警告:如果有太多的数据在你的内部结构(如树形图在这里)来存储,你可能会碰到机器,其中减少任务运行的内存限制。
至少,“还有如何在MR作业中使用treeMap和一些例子?”应该是一个不同的问题。 –
是的。我有一个在setup()中声明treemap的程序,我需要找到最大频率的单词。我在reduce()中完成了这个场景,并试图通过cleanup()来打印结果。我的MR作业正在运行,但是ouptut显示了cleanup()循环中的最后一个单词。 –
但你不觉得这应该是一个单独的问题吗? –