使用新API在Hadoop MapReduce中将作业链接在一起

时间:2014-05-27 18:05:43

标签: java hadoop mapreduce

我有一个MapReduce作业,我需要在运行之前处于某种状态。我尝试使用合成器来实现我想要的但是工作依旧于#34;开始刷新地图输出"。正因为如此,我决定转向一个链式的工作流程,这将把这两个工作结合起来做所需的工作。

我查看了网络上的例子,例如Yahoo's docs,但我无法使用更新的API找到这样做的方法,并希望了解如何执行此操作的示例。以下是我的流程:

作业1:

  • 地图:阅读一些文字
  • 减少:减少某些标准并输出新文本

作业2:

  • 地图:读入Job1的文本输出
  • 减少:减少其他一些标准,并输出

如果有人能给我一个做上述事情的例子,或者可以指出我的一些文档,我会很感激。

链式映射器方法在这里也不合适,因为当我进行缩减时,我需要一个基于键的迭代。

2 个答案:

答案 0 :(得分:0)

在配置和提交作业的java代码中(通常是ToolRunner子类中的run()方法),提交第一份作业:

job.waitForCompletion(true);

在配置和提交第二个作业之前。此方法将等到作业完成后再返回。

答案 1 :(得分:0)

如果指定路径作为第一个作业的输出,则使用与第二个作业的输入相同的路径,将数据临时写入Hadoop并在第二个作业完成后清除。这是使用彼此输出链接两个作业的最简单方法。