链接地图减少程序

时间:2015-10-04 13:27:04

标签: hadoop dictionary mapreduce reducers

我有一种情况,在一个POC期间我想在一个Job中创建一个嵌套的MapReduce。就像一个地图M1 O / P到减速器R1 O / P然后R1输出到M2并且最终输出将来自M2或我们可以用M2 O / P运行R2。

单个作业ID - M1-> R1-> M2-> R2 ...最终输出将在单个O / P文件中。

没有Oozie我们可以做到吗?

2 个答案:

答案 0 :(得分:1)

您可以在Driver类中链接多个作业。首先,通过定义所有必需的配置,为第一个MapReduce创建一个作业。然后通过调用以下方式开始工作:

job1.waitForCompletion(true);

这是等到作业结束。现在检查第一个作业的最终状态,无论是失败还是成功进行适当的下一步行动。

如果第一个作业成功完成,则以相同方式启动下一个MapReduce。首先定义所需参数并使用以下命令启动作业:

job2.waitForCompletion(true);

重要的是第一个输出路径将输入第二个工作。这是串行(顺序)作业链,因为这两个作业将一个接一个地运行。

答案 1 :(得分:0)

您还可以使用作业控制,您可以在其中执行序列中的多个地图缩小作业。在您的情况下,有两个映射器和两个或一个减速器。您可以使用两个地图缩减作业,如果不需要缩减器,则可以使用第二个作业将减速器数设置为零。