新しいHadoop APIを使用して一連のmap-reduceジョブを作成しています。私はOozieを使用してこれらのすべてをパイプライン化する予定ですが、ワークフローのmap-reduce
ノードから複数の出力ストリームを実行する方法を見つけることができません。oazieを使用してmapreduceジョブの複数の出力ストリームに書き込む正しい方法は何ですか?
通常、複数の出力を書き込むには、MultipleOutputs javadocのコードに似たコードを使用しますが、oozieはすべての設定をworkflow.xml
ファイルから取得して、名前付き出力を例のように構成することはできません。
Ozaieで複数の出力を使用することについて議論しているthreadが出てきましたが、Javaタスクを作成してOozieのpiplineに直接追加するという解決策はありませんでした。
map-reduce
ノード経由でworkflow.xml
の方法がありますか?
編集:私はより良い方法があったことを望むものの
クリスのソリューションは、仕事をしました。ここに私が作った正確な変更があります。
Iはworkflow.xmlファイルに以下を加え:に続い
output1=totals
output2=uniques
:私は起動時にoozieに供給されるjob.propertiesファイルに以下を添加
<property>
<name>mapreduce.multipleoutputs</name>
<value>${output1} ${output2}</value>
</property>
<property>
<name>mapreduce.multipleoutputs.namedOutput.${output1}.key</name>
<value>org.apache.hadoop.io.Text</value>
</property>
<property>
<name>mapreduce.multipleoutputs.namedOutput.${output1}.value</name>
<value>org.apache.hadoop.io.LongWritable</value>
</property>
<property>
<name>mapreduce.multipleoutputs.namedOutput.${output1}.format</name>
<value>org.apache.hadoop.mapreduce.lib.output.TextOutputFormat</value>
</property>
<property>
<name>mapreduce.multipleoutputs.namedOutput.${output2}.key</name>
<value>org.apache.hadoop.io.Text</value>
</property>
<property>
<name>mapreduce.multipleoutputs.namedOutput.${output2}.value</name>
<value>org.apache.hadoop.io.LongWritable</value>
</property>
<property>
<name>mapreduce.multipleoutputs.namedOutput.${output2}.format</name>
<value>org.apache.hadoop.mapreduce.lib.output.TextOutputFormat</value>
</property>
私は指定された出力totals
とuniques
に書きました。
これは合理的な解決策です。私はそれを試して、それは動作します...私は私が私のプロパティとworkflow.xmlに追加された行を投稿するので、答えはもう少し完全です。 – coltfred