Задать вопрос
Leksnsk
@Leksnsk

Как распарсить большое количество логов?

Доброго времени суток.

Как лучше всего подойти к задаче парсинга большого объема csv логов звонков (~ 12-15 ГБ), что бы получить максимальную скорость обработки данных?
Логи представляют из себя набор данных - "время, имя, длительность".
По итогу надо для каждого уникального имени получить суммарную длительность.

Таким скриптом на pyhton считалось > 2 часов, хотелось бы побыстрее:

import sys
import re

d = {}

for line in sys.stdin:
                        NameRE = re.compile("NAME=(\w+)")
                        TimeRE = re.compile("TIME=(\d+)")
                        if NameRE.search(line):
                                Name = str(NameRE.search(line).group(1))
                                Time = int(TimeRE.search(line).group(1))
                        if Name in d:
                                Time += d[Name]
                                d[Name] = Time
                        else:
                                d[Name] = Time
for k in d:
        print '%s  %s' % (k, d[k])
  • Вопрос задан
  • 2444 просмотра
Подписаться 3 Оценить 1 комментарий
Ответ пользователя neol К ответам на вопрос (8)
@neol
- re.compile нужно вынести из цикла.
- сделать из двух регулярок одну и вместо трех вызовов search делать один.
- убрать бесполезное преобразование str(NameRE.search(line).group(1))
Ответ написан