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