0

我有一个流媒体工作,我正在通过 Oozie 打电话。我可以使用映射器和减速器成功运行它。但我不明白的是,我如何通过组合器。我所有的 mapper、reducer 和 combiner 都是用 Python 编写的。这行得通吗?

<map-reduce>
 <job-tracker>${jobTracker}</job-tracker>
    <name-node>${nameNode}</name-node>
    <prepare>
        <delete path="${HADOOP_LIB}/OutPath"/>
    </prepare>
    <streaming>
        <mapper>python mapper.py</mapper>
        <combiner>python combiner.py</combiner>
        <reducer>python reducer.py</reducer>

    </streaming>
    <configuration>
        <property>
            <name>mapred.input.dir</name>
            <value>${HADOOP_LIB}/input</value>
        </property>
        <property>
            <name>mapred.output.dir</name>
            <value>${HADOOP_LIB}/OutPath</value>
        </property>
    </configuration>
    <file>mapper.py</file>
    <file>combiner.py</file>
    <file>reducer.py</file>
</map-reduce>

我找不到任何使用标签的地方。或者,我可以在 shell 脚本中使用带有 -combiner 选项的流 jar 命令,然后从 Oozie 调用该作业。

4

1 回答 1

1

不,目前 Oozie MapReduce 操作的流组件没有组合器选项。您需要通过 Oozie Shell 或 Java 操作直接调用 MR 流 jar,以便您可以传递 combiner 属性。

于 2015-02-16T22:21:38.637 回答