在我的mapReduce代码中,我需要在第1阶段运行reducer之后运行不并行的任务。此任务需要在阶段1中输出reducers然后我想在第2阶段的映射器和reducer中使用此任务的输出由于此任务不是并行任务,因此我不需要为其编写MapReduce代码。我应该编写代码的哪部分代码?
答案 0 :(得分:0)
所以,如果我理解得很好,你有两个separete mapreduce工作?一个用于stage1,第二个用于stage2?这种情况的简单解决方案可能是使用Oozie工作流程。我正在使用类似的工作流来查询外部api(没有并行运行):
<workflow-app name="TEST" xmlns="uri:oozie:workflow:0.4">
<start to="Test"/>
<action name="Test">
<java>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<main-class>com.test.Test</main-class>
<java-opts>-Xms128M -Xmx2048M</java-opts>
<arg>-d</arg>
<arg>${Date_Valid}</arg>
<file>/lib/api2.jar</file>
</java>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
将stage1作业放在此java作业和stage2之后。
希望有所帮助