Запрос относительно нескольких выходов для Hadoop 0.20.203 - PullRequest
0 голосов
/ 25 февраля 2012

Я пытаюсь использовать MultipleOutputs в Reducer, чтобы записывать в несколько файлов, используя разделитель.Для этого я пытаюсь сконструировать его объект, используя Reducer.setup () следующим образом:

public static class MOReduce extends Reducer<Text, Integer, Text, Integer> {
    private MultipleOutputs mos;

    public void setup( Reducer.Context context ) {
        mos = new MultipleOutputs( context.getConfiguration() );
    }

Но я столкнулся с проблемой из-за следующего:

  • согласно документация , функция установки принимает Reducer.Context в качестве аргумента
  • , в то время как согласно этой документации , конструктору MultipleOutputs требуется JobConf.Таким образом, в принципе у меня нет способа извлечь JobConf из Reducer.Context
  • Я уже пытался использовать любую функцию, такую ​​как Reducer.Context.getConfXXX, которая возвращает JobConf, но есть только одна функция getConfiguration (), которая возвращает JobContext

Итак, не могли бы вы подсказать, как я могу решить эту проблему и создать экземпляр объекта MultipleOutputs.

1 Ответ

0 голосов
/ 26 февраля 2012

Посмотрите на это Несколько выходов в Reducer

В Hadoop есть два API для создания и управления заданиями mapreduce.Один с JobConf и один с Job.Вы, кажется, используете один с Job.Для вашего случая, как и в приведенной выше ссылке, вам нужно создать свой собственный класс RecordWriter и класс OutputFormatRecordWriter вы можете контролировать, какие файлы писать и когда.

...