【发布时间】: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