Как правильно использовать oozie для записи в несколько выходных потоков для задания mapreduce?

Я использую новый API Hadoop для написания последовательности заданий по уменьшению карты. Я планирую использовать Oozieдля конвейера всего этого вместе, но я не могу найти способ сделать несколько выходных потоков из узла map-reduceв рабочем процессе.

Обычно для записи нескольких выходных данных я бы использовал код, аналогичный коду, приведенному в MultipleOutputs javadoc, но oozie получает всю свою конфигурацию из файла workflow.xml, поэтому именованные выходные данные не могут быть настроены, как в примере.

Я наткнулся на ветку, в которой обсуждалось использование нескольких выходов в Oozie, но там не было представлено никакого решения, кроме создания задачи Java и непосредственного добавления ее в конвейер Oozie.

Есть ли способ сделать это через узел map-reduceв workflow.xml?

Редактировать:

Решение Криса сработало, хотя хотелось бы лучшего способа. Вот точные изменения, которые я сделал.

Я добавил следующее в файл workflow.xml:


    mapreduce.multipleoutputs
   ${output1} ${output2}


    mapreduce.multipleoutputs.namedOutput.${output1}.key
   org.apache.hadoop.io.Text


    mapreduce.multipleoutputs.namedOutput.${output1}.value
   org.apache.hadoop.io.LongWritable


    mapreduce.multipleoutputs.namedOutput.${output1}.format
   org.apache.hadoop.mapreduce.lib.output.TextOutputFormat


    mapreduce.multipleoutputs.namedOutput.${output2}.key
   org.apache.hadoop.io.Text


    mapreduce.multipleoutputs.namedOutput.${output2}.value
   org.apache.hadoop.io.LongWritable


    mapreduce.multipleoutputs.namedOutput.${output2}.format
   org.apache.hadoop.mapreduce.lib.output.TextOutputFormat

Я добавил следующее в файл job.properties, который передается в oozie при запуске:

output1=totals
output2=uniques

Затем в редюсере я написал в именованные выходы всегои уникальных.

5
задан coltfred 4 April 2013 в 11:48
поделиться