【问题标题】:Custom Partitioner not working in Oozie Mapreduce action自定义分区器在 Oozie Mapreduce 操作中不起作用
【发布时间】:2017-09-12 09:35:45
【问题描述】:

我已经在 mapreduce 中实现了二级排序,并尝试使用 Oozie(来自 Hue)来执行它。

虽然我在属性中设置了分区器类,但分区器并没有被执行。所以,我没有得到预期的输出。

同样的代码在使用 hadoop 命令运行时运行良好。

这是我的 workflow.xml

<workflow-app name="MyTriplets" xmlns="uri:oozie:workflow:0.5">
<start to="mapreduce-598d"/>
<kill name="Kill">
    <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="mapreduce-598d">
    <map-reduce>
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <configuration>
            <property>
                <name>mapred.output.dir</name>
                <value>/test_1109_3</value>
            </property>
            <property>
                <name>mapred.input.dir</name>
                <value>/apps/hive/warehouse/7360_0609_rx/day=06-09-2017/hour=13/quarter=2/,/apps/hive/warehouse/7360_0609_tx/day=06-09-2017/hour=13/quarter=2/,/apps/hive/warehouse/7360_0509_util/day=05-09-2017/hour=16/quarter=1/</value>
            </property>
            <property>
                <name>mapred.input.format.class</name>
                <value>org.apache.hadoop.hive.ql.io.RCFileInputFormat</value>
            </property>
            <property>
                <name>mapred.mapper.class</name>
                <value>PonRankMapper</value>
            </property>
            <property>
                <name>mapred.reducer.class</name>
                <value>PonRankReducer</value>
            </property>
            <property>
                <name>mapred.output.value.comparator.class</name>
                <value>PonRankGroupingComparator</value>
            </property>
            <property>
                <name>mapred.mapoutput.key.class</name>
                <value>PonRankPair</value>
            </property>
            <property>
                <name>mapred.mapoutput.value.class</name>
                <value>org.apache.hadoop.io.Text</value>
            </property>
            <property>
                <name>mapred.reduce.output.key.class</name>
                <value>org.apache.hadoop.io.NullWritable</value>
            </property>
            <property>
                <name>mapred.reduce.output.value.class</name>
                <value>org.apache.hadoop.io.Text</value>
            </property>
            <property>
                <name>mapred.reduce.tasks</name>
                <value>1</value>
            </property>
            <property>
                <name>mapred.partitioner.class</name>
                <value>PonRankPartitioner</value>
            </property>
            <property>
                <name>mapred.mapper.new-api</name>
                <value>False</value>
            </property>
        </configuration>
    </map-reduce>
    <ok to="End"/>
    <error to="Kill"/>
</action>
<end name="End"/>

当使用 hadoop jar 命令运行时,我使用 JobConf.setPartitionerClass API 设置分区器类。

不知道为什么我的分区器在使用 Oozie 运行时没有执行。尽管添加了

            <property>
                <name>mapred.partitioner.class</name>
                <value>PonRankPartitioner</value>
            </property>

从 Oozie 运行它时我缺少什么??

【问题讨论】:

  • 尝试给出这个参数的完整类名。
  • @PreetiKhurana 我正在尝试从 HUE 运行 oozie。即使我给出了一些在 JAR 中不可用的随机类名,也不会引发任何错误或异常。我认为属性“mapred.partitioner.class”本身没有被考虑。如果我将属性更改为“mapreduce.partitioner.class”,则正在评估该属性。
  • @PreetiKhurana :计划使用新的 API 重新编写 mapreduce 代码。由于“mapreduce.partitioner.class”属性被识别,而不是“mapred.partitioner.class”。你有什么建议吗?
  • 哦.. 是的,新属性应该可以工作

标签: mapreduce oozie hadoop-partitioning oozie-workflow secondary-sort


【解决方案1】:

通过使用新 API 重写 mapreduce 作业解决了这个问题。

oozie 工作流中用于分区器的属性是 mapreduce.partitioner.class。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多