gpt4 book ai didi

java - Hadoop 递归映射

转载 作者:可可西里 更新时间:2023-11-01 14:47:52 24 4
gpt4 key购买 nike

我有一个要求,我的映射器在某些情况下可能会产生一个新的键/值供另一个映射器处理。有没有一种明智的方法可以做到这一点?我考虑过编写自己的自定义输入格式(队列?)来实现这一点。有任何想法吗?谢谢!

编辑:我应该澄清

方法一

Map Step 1(foo1, bar1) -> out1(foo2, bar2) -> out2(foo3, bar3) -> (fooA, barA), (fooB, barB)(foo4, bar4) -> (fooC, barC)Reduction Step 1:(out1) -> ok(out2) -> ok((fooA, barA), (fooB, barB)) -> create Map Step 2((fooC, barC)) -> also send this to Map Step 2Map Step 2:(fooA, barA) -> out3(fooB, barB) -> (fooD, barD)(fooC, barC) -> out4Reduction Step 2:(out3) -> ok((fooD, barD)) -> create Map Step 3(out4) -> okMap Step 3:(fooD, barD) -> out5Reduction Step 3:(out5) -> ok-- no more map steps. finished --

所以它是完全递归的。一些键/值发出用于归约的输出,一些生成新的键/值用于映射。我真的不知道在给定的运行中我可能会遇到多少 Map 或 Reduction 步骤。

方法二

Map Step 1(foo1, bar1) -> out1(foo2, bar2) -> out2(foo3, bar3) -> (fooA, barA), (fooB, barB)(foo4, bar4) -> (fooC, barC)(fooA, barA) -> out3(fooB, barB) -> (fooD, barD)(fooC, barC) -> out4(fooD, barD) -> out5Reduction Step 1:(out1) -> ok(out2) -> ok(out3) -> ok(out4) -> ok(out5) -> ok

此方法将使映射器提供它自己的输入列表。我不确定最终哪种方式实现起来更简单。

最佳答案

通过 Hadoop 进行递归的“方法 1”方式强制您通过 Map 和 reduce 为每个“递归深度”运行完整数据集。这意味着您必须确定这可以进行多深,并且您将遭受巨大的性能影响。

你能肯定地说递归深度是有限的吗?

如果是这样,那么我肯定会选择“方法 2”,并以一种在一次映射器调用中执行所需递归的方式实际构建映射器。它更简单,可以节省大量性能。

关于java - Hadoop 递归映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4954285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com