0

Ich habe sekundäre Sortierung in mapreduce implementiert und versucht, es mit Oozie (From Hue) auszuführen.Benutzerdefinierte Partitionierer funktioniert nicht in Oozie Mapreduce Aktion

Obwohl ich die Partitionierungsklasse in den Eigenschaften festgelegt habe, wird der Partitionierer nicht ausgeführt. Also, ich werde nicht wie erwartet ausgegeben.

Derselbe Code läuft gut, wenn er mit dem Befehl hadoop ausgeführt wird.

Und hier meine workflow.xml ist

<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"/> 

Wenn Befehl hadoop jar läuft, stelle ich die Partitionierungs Klasse JobConf.setPartitionerClass API.

Nicht sicher, warum mein Partitionierer nicht ausgeführt wird, wenn er mit Oozie läuft. Trotz des Hinzufügens

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

Irgendwelche, die ich vermisse, wenn es von Oozie läuft ??

+0

Versuchen Sie, den vollständigen Klassennamen für diesen Parameter anzugeben. –

+0

@PreetiKhurana Ich versuche Oozie von HUE zu laufen. Selbst wenn ich einen zufälligen Klassennamen gebe, der im JAR für den Partitionierer nicht verfügbar ist, wird kein Fehler oder eine Ausnahme ausgelöst. Ich denke, dass die Eigenschaft "mapred.partitioner.class" selbst nicht berücksichtigt wird. Wenn ich die Eigenschaft in "mapreduce.partitioner.class" ändere, wird die Eigenschaft ausgewertet. –

+0

@PreetiKhurana: Plane, den mapreduce Code mit neuer API neu zu schreiben. Da die Eigenschaft "mapreduce.partitioner.class" erkannt wird und nicht "mapred.partitioner.class". Hast du irgendwelche Vorschläge? –

Antwort

0

Dies wurde behoben, indem der mapreduce-Job mithilfe neuer APIs neu geschrieben wurde.

Die im oozie-Workflow für den Partitionierer verwendete Eigenschaft war mapreduce.partitioner.class.

Verwandte Themen