Чтение и отображение данных, считываемых из огромных файлов

У нас есть довольно большие файлы, порядка 1-1. 5 ГБ объединены (в основном файлы журналов) с необработанными данными, которые легко анализируются в CSV, который впоследствии предполагается построить в виде графика для создания набора изображений графиков.

В настоящее время мы используем сценарии bash, чтобы преобразовать необработанные данные в csv-файл, содержащий только числа, которые необходимо отобразить, а затем передать его в сценарий gnuplot. Но этот процесс идет крайне медленно. Я попытался ускорить выполнение сценариев bash, заменив некоторые конвейерные cut s, tr s и т. Д. На одну команду awk , хотя это улучшило скорость, все это все еще идет очень медленно.

Итак, я начинаю верить, что есть лучшие инструменты для этого процесса. В настоящее время я пытаюсь переписать этот процесс на python + numpy или R. Мой друг предложил использовать JVM, и если я это сделаю, я буду использовать clojure, но я не уверен, как JVM будет работать.

У меня нет большого опыта в решении подобных проблем, поэтому любые советы о том, как действовать дальше, были бы полезны. Спасибо.

Изменить: Кроме того, я хочу сохранить (на диск) сгенерированные промежуточные данные, то есть csv, поэтому мне не придется его повторно генерировать, если я выберу другой ищущий график.

Редактировать 2: Файлы необработанных данных содержат по одной записи на одну строку, поля которых разделены разделителем ( | ). Не все поля являются числами. Каждое поле, которое мне нужно в выходном CSV, получается путем применения определенной формулы к входным записям, которая может использовать несколько полей из входных данных. Выходной CSV будет иметь 3-4 поля в строке, и мне нужны графики, которые отображают 1-2, 1-3, 1-4 поля в (может быть) гистограмме. Я надеюсь, что это дает лучшую картину.

Редактировать 3: Я немного изменил сценарий @adirau, и, похоже, он работает неплохо. Я зашел достаточно далеко, чтобы читать данные, отправлять их в пул потоков процессора (псевдообработка, добавлять имя потока к данным) и объединять их в выходной файл через другой поток сборщика .

PS: Я не уверен насчет тегов в этом вопросе, не стесняйтесь исправлять.

5
задан Shrikant Sharat 29 March 2011 в 12:53
поделиться