0

mapreduceで2次ソートを実装し、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"/> 

のHadoop jarコマンドを使用して実行している私のworkflow.xml

ですが、私はJobConf.setPartitionerClassのAPIを使用して、パーティクラスを設定します。

Oozieを使用しているときに私のパーティショナーが実行されない理由がわかりません。追加のインスピレーション

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

私はOozieからそれを実行するときに何が欠けているのですか?

+0

このパラメータの完全なクラス名を指定してください。 –

+0

@PreetiKhurana私はHUEからoozieを実行しようとしています。たとえ私がパーティショナーのJARで利用できないいくつかのランダムなクラス名を与えても、エラーも例外もスローされません。私はプロパティ "mapred.partitioner.class"自体は考慮されていないと思う。プロパティを "mapreduce.partitioner.class"に変更すると、そのプロパティが評価されています。 –

+0

@PreetiKhurana:新しいAPIを使用してmapreduceコードを書き直すことを計画しています。 "mapreduce.partitioner.class"プロパティが認識されているので "mapred.partitioner.class"ではありません。何か提案はありますか ? –

答えて

0

これを解決するには、新しいAPIを使用してmapreduceジョブを書き直します。

パーティショナーのoozieワークフローで使用されるプロパティーは、mapreduce.partitioner.classでした。

関連する問題