Объединение данных Hadoop из двух файлов — как заставить преобразователи читать определенные файлы

Я пытаюсь написать задание Map Reduce для объединения данных в Hadoop. Я чувствую, что я близок, но у меня проблема, не позволяющая карте1 передать карту2.

У меня есть два преобразователя и один редуктор, и я пытаюсь заставить Map1 читать из одного файла, заставляя Map2 читать из другого. Я хотел бы проанализировать результаты в редукторе, чтобы отформатировать вывод соединения.

Я знаю, что по умолчанию при цепочке картографов в задании вывод задания будет вводом следующего, я знаю, что это можно переопределить, но мне это не удалось. Подтверждено, что данные с карты 1 передаются на карту 2.

Вот как я думал, что должен указать входной путь одного преобразователя:

        //Setting Configuration for map2
        JobConf map2 = new JobConf(false);
        String[] map2Args = new GenericOptionsParser(map2, args).getRemainingArgs();
        FileInputFormat.setInputPaths(map2, new Path(map2Args[1]));
        ChainMapper.addMapper(  conf,
                                Map2.class,
                                LongWritable.class,
                                Text.class,
                                Text.class,
                                Text.class,
                                true,
                                map2);

conf — это основная конфигурация задания, а args состоит из 3 значений. 1-е значение — входной файл, 2-е значение — входной файл, 3-е значение — предполагаемый выходной файл.

Как правильно указать входной путь для отдельного преобразователя, который не является первым при работе с соединениями данных и несколькими преобразователями в Hadoop?


person d.lanza38    schedule 12.05.2014    source источник
comment
Пожалуйста, игнорируйте этот вопрос, я считаю, что неправильно прочитал hadoop.apache.org/docs/r2.2.0/api/org/apache/hadoop/mapred/lib/ и невозможно переопределить входной путь. Если это возможно, пожалуйста, напишите, хотя.   -  person d.lanza38    schedule 12.05.2014


Ответы (1)


этот сценарий можно решить с помощью множественного формата ввода. Используя этот входной формат, мы можем прочитать два файла разных форматов, и результат их объединения отправляется на работу редуктора.

Краткое описание концепции и примеры приведены по ссылке ниже.

https://github.com/subbu-m/MultipleInputFormat

Я надеюсь, что эта информация поможет.

person Subramanyam M    schedule 20.12.2014