我有一种情况,在一个POC期间,我想在一个Job中创建一个嵌套的MapReduce。就像映射M1 O/P到减速机R1 O/P然后R1输出到M2最终输出将得到M2或者我们可以用M2 O/P运行R2
单个作业ID - M1->R1->M2->R2…最终输出将在单个O/P文件中。
我们能没有Oozie吗?
您可以在Driver类中链接多个作业。首先,通过定义所有必需的配置,为第一个MapReduce创建一个作业。然后像往常一样调用:
job1.waitForCompletion(true);
等待任务完成。现在检查第一个作业的最终状态,是否失败或成功,以便进行适当的下一步操作。
如果第一个作业成功完成,那么以同样的方式启动下一个MapReduce。首先定义所需的参数,并使用以下命令启动作业:
job2.waitForCompletion(true);
重要的是第一个作业的输出路径将被输入到第二个作业。这是串行(顺序)作业链,因为两个作业将一个接一个地运行。
您还可以使用作业控制,其中可以按顺序执行多个map reduce作业。在你的例子中,有两个映射器和两个或一个还原器。您可以有两个map reduce作业,对于第二个作业,如果您不需要reducer,您可以使用set reducer的数量为零。