Я использую новый Hadoop API для написания последовательности заданий уменьшения карты. Я планирую использовать Oozie для конвейерной передачи всего этого вместе, но я не могу найти способ сделать несколько выходных потоков из узла map-reduce
в рабочем процессе.
Обычно для записи нескольких выходов я использовал бы код, аналогичный коду, приведенному в javadoc MultipleOutputs *1007*, но oozie получает всю свою конфигурацию из файла workflow.xml
, поэтому именованные выходы не могут быть настроены так, как они есть в пример.
Я сталкивался с потоком , в котором обсуждалось использование нескольких выходов в Oozie, но не было представлено никакого решения, кроме создания задачи Java и добавления ее непосредственно в конвейер Oozie.
Есть ли способ сделать это через map-reduce
узел в workflow.xml
?
Edit:
Решение Криса сработало, хотя хотелось бы, чтобы был лучший способ. Вот точные изменения, которые я сделал.
Я добавил следующее в файл workflow.xml:
<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>
Я добавил следующее в файл job.properties, который загружается в oozie при запуске:
output1=totals
output2=uniques
Затем в редукторе я написал на названные выходы totals
и uniques
.