在阶段1和阶段2之间运行不是MapReduced的任务

时间:2014-08-08 18:43:52

标签: hadoop mapreduce

在我的mapReduce代码中,我需要在第1阶段运行reducer之后运行不并行的任务。此任务需要在阶段1中输出reducers然后我想在第2阶段的映射器和reducer中使用此任务的输出由于此任务不是并行任务,因此我不需要为其编写MapReduce代码。我应该编写代码的哪部分代码?

1 个答案:

答案 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之后。

希望有所帮助