Tenemos archivos bastante grandes, del orden de 1-1.5 GB combinados (principalmente archivos de registro) con datos brutos que son fácilmente analizables por un csv, que posteriormente se supone que se grafica para generar un conjunto de imágenes gráficas.Leer y graficar datos leídos desde archivos enormes
Actualmente, estamos utilizando los scripts bash para convertir los datos brutos en un archivo csv, con solo los números que deben graficarse, y luego alimentarlo en un script gnuplot. Pero este proceso es extremadamente lento. Traté de acelerar los scripts bash reemplazando algunos cut
s, tr
s con un solo comando awk
, aunque esto mejoró la velocidad, todo sigue siendo muy lento.
Por lo tanto, estoy empezando a creer que hay mejores herramientas para este proceso. Actualmente estoy buscando reescribir este proceso en python + numpy o R. Un amigo mío sugirió usar JVM, y si tengo que hacerlo, usaré clojure, pero no estoy seguro de cómo funcionará la JVM.
No tengo mucha experiencia en este tipo de problemas, por lo que cualquier consejo sobre cómo proceder sería genial. Gracias.
Edit: Además, querré almacenar (en el disco) los datos intermedios generados, es decir, el csv, así que no tengo que volver a generarlo, debería elegir Quiero un gráfico de aspecto diferente .
Editar 2: Los archivos de datos brutos tienen un registro por línea, cuyos campos están separados por un delimitador (|
). No todos los campos son números. Cada campo que necesito en la salida csv se obtiene aplicando una determinada fórmula en los registros de entrada, que pueden usar múltiples campos de los datos de entrada. La salida csv tendrá 3-4 campos por línea, y necesito gráficos que tracen 1-2, 1-3, 1-4 campos en un (puede ser) gráfico de barras. Espero que eso dé una mejor imagen.
Editar 3: He modificado un poco la secuencia de comandos de @ adirau y parece estar funcionando bastante bien. He avanzado lo suficiente como para leer datos, enviarlos a un grupo de subprocesos de procesador (pseudoproceso, anexar nombre de subproceso a datos) y agregarlos en un archivo de salida a través de otro hilo colector.
PD: No estoy seguro del etiquetado de esta pregunta, no dude en corregirlo.
Con archivos de ese tamaño, R puede ser complicado, ya que requiere bastante memoria. Sin embargo, las posibilidades gráficas de R exceden las de Python (ver, por ejemplo, http://addictedtor.free.fr/graphiques/). Asegúrese de verificar el multihilo en R (paquete de nieve). Pero sobre todo, codifique con lo que está familiarizado. Si no está muy familiarizado con R, será difícil optimizar esto. –
sí, ese es otro punto, tengo poca o ninguna experiencia en R, y lo mismo con numpy y matplotlib, pero estoy muy cómodo con python. Esto también influirá en mi elección. –