Можно ли использовать один запуск задания Hadoop для вывода данных в разные каталоги на основе ключей?
Мой пример использования - журналы доступа к серверу.Скажем, у меня есть все вместе, но я хочу разделить их на основе некоторых общих шаблонов URL.
Например,
- Все, что начинается с / foo /, должно идти в /год / месяц / день / час / foo / file
- Все, что начинается с / bar / должно идти в / year / month / day / hour / bar / file
- Все, что нематч должен идти в / year / month / day / hour / other / file
Здесь есть две проблемы (из моего понимания Map Reduce): во-первых, я бы предпочел просто перебрать мойданные один раз, вместо того, чтобы запускать одно задание "grep" для каждого типа URL, который я бы хотел сопоставить.Как бы я разделил вывод, хотя?Если я наберу первый с «foo», второй с «bar», а остальное с «other», то разве они все не переходят на одни и те же редукторы?Как мне сказать Hadoop выводить их в разные файлы?
Вторая проблема связана (может быть, такая же?), Мне нужно разбить вывод по отметке времени в строке журнала доступа.
Должен заметить, что я не ищу код для решения этой проблемы, а скорее ищу подходящую терминологию и решение высокого уровня.Если мне нужно сделать это с несколькими запусками, это нормально, но я не могу запустить один «grep» для каждого возможного часа (чтобы создать файл для этого часа), должен быть другой способ?