我有一种情况,在一个POC期间我想在一个Job中创建一个嵌套的MapReduce。就像一个地图M1 O / P到减速器R1 O / P然后R1输出到M2并且最终输出将来自M2或我们可以用M2 O / P运行R2。
单个作业ID - M1-> R1-> M2-> R2 ...最终输出将在单个O / P文件中。
没有Oozie我们可以做到吗?
答案 0 :(得分:1)
您可以在Driver类中链接多个作业。首先,通过定义所有必需的配置,为第一个MapReduce创建一个作业。然后通过调用以下方式开始工作:
job1.waitForCompletion(true);
这是等到作业结束。现在检查第一个作业的最终状态,无论是失败还是成功进行适当的下一步行动。
如果第一个作业成功完成,则以相同方式启动下一个MapReduce。首先定义所需参数并使用以下命令启动作业:
job2.waitForCompletion(true);
重要的是第一个输出路径将输入第二个工作。这是串行(顺序)作业链,因为这两个作业将一个接一个地运行。
答案 1 :(得分:0)
您还可以使用作业控制,您可以在其中执行序列中的多个地图缩小作业。在您的情况下,有两个映射器和两个或一个减速器。您可以使用两个地图缩减作业,如果不需要缩减器,则可以使用第二个作业将减速器数设置为零。