2013-12-04 5 views
1

Мне нужны некоторые предложения о том, как я должен обрабатывать журналы инфраструктуры с использованием hadoop в Java вместо Pig, поскольку я думаю, что Pig не поддерживает фильтры regex при чтении файлов журнала.Предложения hadoop о том, как обрабатывать журналы

В качестве примера у меня есть журналы cisco и журналы веб-сервера, и я хочу отфильтровать определенные значения по строке и подать в hadoop.

Есть несколько предложений в Интернете. I.e сначала изменить его на формат csv, но что, если файл журнала находится в GBs ???

Можно ли фильтровать строки на «карту» этапа т.е. программа будет читать строки из файла в HDFS и отправить его Mapper ...

Мне нужны некоторые предложения по наилучшему образу и чистому способу сделайте это ....

спасибо.

+0

Вы, кажется, работаете в Linux, почему бы не использовать 'grep',' sed', ...? – devnull

+0

Мне это известно, но журналы довольно огромные, и я хочу создать некоторую статистику, я уже пробовал использовать свиньи для фильтрации журналов веб-серверов по IP, но предел с помощью регулярного выражения ... поэтому я надеюсь это сделать в Java непосредственно с hadoop. – krisdigitx

+1

Итак, вы думаете, что java будет более эффективным по сравнению с 'grep'? Удачи. – devnull

ответ

6

Мы можем сделать REGEXoperations по телефону PIG. PIG использует только JAVA REGEX specifications.

Пожалуйста, перейдите по следующему примеру:

myfile = LOAD '999999-99999-2007' AS (a:chararray); 

filterfile = FILTER myfile BY a MATCHES '.*DAY+.*'; 

selectfile = FOREACH filterfile GENERATE a, SIZE(a) AS size; 

STORE selectfile INTO '/home/jagadish/selectfile'; 

Файл, используемый в примере имеет размер 2,7 Гб содержит 11 миллионов строк. Из выходов регулярного выражения - 450 000 строк.

Я считаю, что это отвечает на ваш вопрос, в противном случае, пожалуйста, дайте мне знать.

+0

Я предпочитаю использовать Java API вместо свиньи, так как он лучше фильтрует регулярные выражения и позволяет больше контролировать .. – krisdigitx

Смежные вопросы