Я разрабатываю приложение для сокращения карты, в котором я должен получить месяц начала и окончания месяца (не обязательно первая или последняя дата месяца, поскольку они могут быть праздниками или суббота-воскресенье) Поэтому я извлекаю месяц как ключ и соответствующую дату в качестве значения, чтобы он стал агрегированным месяцем, и я могу извлечь максимальную дату и дату. Теперь, основываясь на этой дате, мне нужно использовать другие атрибуты файла. Поэтому я хочу направить вывод одного редуктора в другой преобразователь. Этот второй сопоставитель также будет иметь файл в качестве входных данных, и поэтому я могу сравнить даты и обработать данные соответствующим образом. Есть ли способ, которым я могу это сделать?использование выходного сигнала редуктора в другом преобразователе
ответ
на высоком уровне один способ приблизиться к этому было бы реализовать два MapReduce рабочих мест, которые вы запускаете один за другим:
Работа 1 принимает набор входных данных и выходных пар ключ-значение для начала и конца даты каждого месяца в один файл с использованием одного редуктора. Этот выходной файл будет очень маленьким. Это может быть выполнено аналогично:
hadoop jar yourjob.jar YourFirstDriverClass /path/to/input /path/to/kvp/output
Работа 2 имеет тот же набор входных данных, а также путь к файлу даты месяца, и выводит результат вашей обработки. Файл дат месяца достаточно мал, чтобы его можно было открыть и загрузить в память в вызове setup()
каждого картографа или редуктора. Это может быть выполнено аналогично:
hadoop jar yourjob.jar YourSecondDriverClass /path/to/input /path/to/kvp/output /path/to/final/output
В драйвере main()
можно передать ссылку на даты месяца подать в картограф и восстановители аналогичен:
getConf().set('month.dates.file', args[1]);
В вашем картографе или редукторе setup()
вас можно затем загрузить данные из даты месяца файла аналогична:
Configuration conf = context.getConfiguration();
Path path = new Path(conf.get('month.dates.file'));
FileSystem fs = FileSystem.get(conf);
BufferedReader br = new BufferedReader(new InputStreamReader(fs.open(path)));
String line = br.readLine();
while (line != null) {
// Read your month dates from line into a data structure, e.g. a Map
line = br.readLine();
}
с месяцем датой загруженным в структуру данных в т он отображает или уменьшает класс, после чего вы можете получить к ним доступ для каждого вызова map()
или reduce()
и обработать свои входные данные соответствующим образом.
Это, очевидно, достаточно сложное для того, что вы пытаетесь сделать, и это хороший пример того, почему MapReduce абстракция, такими как Apache Hive, Apache Pig и Apache Crunch популярна для реализации рабочих мест с гораздо меньшим количеством коды.
Спасибо человеку. Подумав больше, я узнал, что мог бы достичь этого, используя статическую переменную –
- 1. Пропустить список выходного сигнала редуктора tp
- 2. Значение выходного сигнала Spinbox
- 3. Чтение из выходного файла редуктора
- 4. Обработка выходного сигнала ответа
- 5. командная строка выходного сигнала
- 6. Получение выходного сигнала
- 7. адаптация выходного сигнала DirectDraw
- 8. Как получить одну пару ключ-значение в качестве выходного сигнала от редуктора
- 9. Размер выходного файла редуктора Limit с Scalding
- 10. Использование Arduino в качестве выходного сигнала для прогета Python
- 11. Использование заглушки в rspec для проверки выходного сигнала rand
- 12. Использование логического в цветовом преобразователе в XAML
- 13. Формат выходного сигнала AWS Json
- 14. dumpsys SurfaceFlinger интерпретация выходного сигнала
- 15. Выбор выходного сигнала JavaFX Audio
- 16. Форматирование выходного сигнала желаемым образом
- 17. Специфическая строка выходного сигнала HIVE
- 18. Jenkins - Уровень выходного сигнала консоли
- 19. Scipy Griddata Размеры выходного сигнала
- 20. Выполнение выходного сигнала на выходе
- 21. Ограничить длину выходного сигнала GDB
- 22. Превышен предел выходного сигнала Pycharm
- 23. Python: настройка выходного сигнала gmtime
- 24. Поверхность плотин - увеличение выходного сигнала
- 25. Угловые 2 @ Параметры выходного сигнала
- 26. Подавление выходного сигнала журнала, снова
- 27. Возврат из обработчика сигнала и выходного сигнала в масках
- 28. Регулировка выходного сигнала управления в математике
- 29. Увеличение выходного сигнала в лабораторном режиме
- 30. Метод анализа выходного сигнала регенерации в SimJava
Вы хотите, чтобы 1) использовала задание MR, чтобы извлечь минимальные/максимальные даты каждого месяца, а затем 2) запустить задание MR по тем же входным данным, но иметь доступ к этим минимальным/максимальным датам обрабатывать данные? –
да. точно ... –