0
mapreduce에서 보조 정렬을 구현하고 Oozie (Hue에서)를 사용하여 실행하려고했습니다.Oozie Mapreduce 작업에서 사용자 정의 파티션이 작동하지 않습니다.
속성에 분할 자 클래스를 설정했지만 분할자가 실행되지 않습니다. 따라서 예상대로 출력되지 않습니다.
hadoop 명령을 사용하여 실행할 때 동일한 코드가 잘 실행됩니다.
그리고 여기가
<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"/>
하둡 항아리 명령을 사용하여 실행 내 workflow.xml
, 난 JobConf.setPartitionerClass API를 사용하여 파티션 프로그램 클래스를 설정합니다.Oozie를 사용하여 실행할 때 내 분할자가 실행되지 않는 이유를 잘 모릅니다. 추가 할 것을 촉구하십시오
<property>
<name>mapred.partitioner.class</name>
<value>PonRankPartitioner</value>
</property>
나는 무엇을 Oozie에서 실행할 때 놓치고 있습니까?
이 매개 변수의 전체 클래스 이름을 지정하십시오. –
@PreetiKhurana 나는 HUE에서 오지를 실행하려고합니다. 파서에 대한 JAR에서 사용할 수없는 임의의 클래스 이름을 제공하더라도 오류나 예외가 발생하지 않습니다. 나는 "mapred.partitioner.class"속성 자체가 고려되지 않는다고 생각한다. 속성을 "mapreduce.partitioner.class"로 변경하면 해당 속성이 평가됩니다. –
@PreetiKhurana : 새로운 API를 사용하여지도 작성 코드를 다시 작성하려고합니다. "mapreduce.partitioner.class"속성이 인식되고 있기 때문에 "mapred.partitioner.class"가 아닙니다. 의견 있으십니까 ? –