Я использую новый 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
Затем в редюсере я написал в именованные выходы всего
и уникальных
.