#алгоритм #файлы #логирование #highload #big_data
Есть сервер с 1gb RAM. Есть лог файл nginx (любой другой веб-сервер) на 70gb. Как
максимально быстро собрать статистику по user agent пользователей сайта, учитывая описанные
ограничения по ресурсам.
Ответы
Ответ 1
можно воспользоваться StringTokenizer в языке Java, который позволяет считывать файл построчно и не тратить память на хранение всех строк файла. StringTokenizer tok = new StringTokenizer("/path/to/file"); while (tok.hasMoreTokens()) { String line = tok.nextToken(); // работаешь со строкой. } Также можно указывать разделитель в конструкторе, по умолчанию стоит \t\n\r\fОтвет 2
Считываете файл построчно и анализируете считанную сроку. Практически во всех языках можно указать размер буфера при работе с файловой системой и поэтому, несмотря на то, что вы работаете с файлом построчно, система будет читать файл фиксированными блоками.
Комментариев нет:
Отправить комментарий