Использование Hadoop для "вывода" данных за один прогон - PullRequest
3 голосов
/ 07 декабря 2010

Можно ли использовать один запуск задания 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» для каждого возможного часа (чтобы создать файл для этого часа), должен быть другой способ?

1 Ответ

1 голос
/ 08 декабря 2010

Вам нужно разделить данные так, как вы их описали.Тогда вам нужно иметь несколько выходных файлов.Смотрите здесь ( Создание нескольких выходных файлов с Hadoop 0.20 + ).

...