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에서 실행할 때 놓치고 있습니까?

+0

이 매개 변수의 전체 클래스 이름을 지정하십시오. –

+0

@PreetiKhurana 나는 HUE에서 오지를 실행하려고합니다. 파서에 대한 JAR에서 사용할 수없는 임의의 클래스 이름을 제공하더라도 오류나 예외가 발생하지 않습니다. 나는 "mapred.partitioner.class"속성 자체가 고려되지 않는다고 생각한다. 속성을 "mapreduce.partitioner.class"로 변경하면 해당 속성이 평가됩니다. –

+0

@PreetiKhurana : 새로운 API를 사용하여지도 작성 코드를 다시 작성하려고합니다. "mapreduce.partitioner.class"속성이 인식되고 있기 때문에 "mapred.partitioner.class"가 아닙니다. 의견 있으십니까 ? –

답변

0

새로운 API를 사용하여 mapreduce 작업을 다시 작성하여이를 해결했습니다.

파티셔를위한 oozie 워크 플로우에 사용되는 특성은 mapreduce.partitioner.class입니다.

관련 문제