У нас есть довольно большие файлы, порядка 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: Я не уверен насчет тегов в этом вопросе, не стесняйтесь исправлять.