【发布时间】:2011-08-28 03:00:05
【问题描述】:
我需要用 Java 做一个 MapReduce 应用程序,它需要是自动递归的,这意味着对于处理的每一行输入文件,它必须检查输入/映射条目的所有行是否有条件,由函数验证。或者,换句话说,Reducer 应该调用/读取接收到的每一对(键、值)的所有 Map。
在 Hadoop 框架上实现此功能的最佳方式是什么?
我可以通过读取输入 n 次或将输入加载到哈希图中以编程方式执行此操作,但我认为可以在 MapReduce 范例中完成所有操作。 感谢您的任何帮助/提示! 编辑: 更多细节,我(作为其他工作的结果)有(索引,计数)问题空间的分区列表,并希望作为输出(索引,sumOfNearestNeighborsCounts),所以对于每个索引,我想再次访问地图,并为每个 NearestNeighbor 索引求和出现次数。 (另见 Costi Ciudatu 评论)【问题讨论】:
-
您是说希望输入多次通过映射阶段直到满足条件?还是通过 map 和 reduce 阶段?
-
你能帮我澄清一下吗:你有输入 -> (A, B) -> MAP -> (C, D) -> REDUCE -> (E, F)。对于到达 reducer 的每个 (C, D) 对,您需要检查所有映射器发出的所有 (C, D) 对,以便能够发出 (E, F) 结果。是这样吗?
-
感谢您这么快的答复! @Tim Yates,仅在 reduce 阶段......以某种方式,我想为我在 reduce 中处理的每个条目再次访问 all 映射。
-
@Costi Ciudatu,是的,没错!
-
还有一件事:你能告诉我你的 check() 方法的签名吗? -- 请指出代表 map/reduce 输入/输出键/值的类型?
标签: java recursion hadoop mapreduce