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からそれを実行するときに何が欠けているのですか?
このパラメータの完全なクラス名を指定してください。 –
@PreetiKhurana私はHUEからoozieを実行しようとしています。たとえ私がパーティショナーのJARで利用できないいくつかのランダムなクラス名を与えても、エラーも例外もスローされません。私はプロパティ "mapred.partitioner.class"自体は考慮されていないと思う。プロパティを "mapreduce.partitioner.class"に変更すると、そのプロパティが評価されています。 –
@PreetiKhurana:新しいAPIを使用してmapreduceコードを書き直すことを計画しています。 "mapreduce.partitioner.class"プロパティが認識されているので "mapred.partitioner.class"ではありません。何か提案はありますか ? –