Я пытаюсь написать задание 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?