gpt4 book ai didi

hadoop - 在 Hadoop 中链接多个 MapReduce 作业

转载 作者:可可西里 更新时间:2023-11-01 14:06:05 27 4
gpt4 key购买 nike

在您应用 MapReduce 的许多实际情况中,最终算法最终是几个 MapReduce 步骤。

即Map1、Reduce1、Map2、Reduce2 等。

因此,您拥有上次 reduce 的输出,需要作为下一个 map 的输入。

一旦管道成功完成,您(通常)不想保留中间数据。此外,由于此中间数据​​通常是某种数据结构(如“映射”或“集合”),您不想在写入和读取这些键值对时花费太多精力。

在 Hadoop 中推荐的做法是什么?

是否有一个(简单的)示例说明如何以正确的方式处理这些中间数据,包括之后的清理?

最佳答案

我认为 Yahoo 开发人员网络上的这个教程将帮助您解决这个问题:Chaining Jobs

您使用 JobClient.runJob()。第一个作业的数据输出路径成为第二个作业的输入路径。这些需要作为参数传递给您的作业,并使用适当的代码来解析它们并为作业设置参数。

我认为上述方法可能是现在较旧的 mapred API 执行此操作的方式,但它应该仍然有效。新的 mapreduce API 中会有类似的方法,但我不确定它是什么。

至于在作业完成后删除中间数据,您可以在代码中执行此操作。我以前做过的方法是使用类似的东西:

FileSystem.delete(Path f, boolean recursive);

路径是数据在 HDFS 上的位置。您需要确保仅在没有其他工作需要时才删除此数据。

关于hadoop - 在 Hadoop 中链接多个 MapReduce 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499585/

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