我们有很大的文件,1-1.5GB的顺序(主要是日志文件)与原始数据很容易解析为csv,随后应该生成图形一组图形图像。从巨大文件中读取和绘制数据
目前,我们使用bash脚本将原始数据转换为csv文件,只需要绘制数字,然后将其提供给gnuplot脚本。但是这个过程非常缓慢。我试图通过用单个awk
命令替换一些管道cut
s,tr
s等来加速bash脚本,虽然这提高了速度,但整个过程仍然非常缓慢。
因此,我开始相信这个过程有更好的工具。我目前正在用python + numpy或R重写这个过程。我的一位朋友建议使用JVM,如果我要这样做,我会使用clojure,但不知道JVM如何执行。
我在处理这类问题方面没有太多经验,所以关于如何进行的任何建议都会很棒。谢谢。另外,我将要存储(到磁盘)生成的中间数据,即csv,所以我不必重新生成它,我应该选择我想要一个不同的图表。
编辑2:的原始数据文件具有每一条线,其字段由分隔符(|
)是分开的一个记录。并非所有字段都是数字。我在输出csv中需要的每个字段都是通过在输入记录上应用某个公式获得的,这些公式可能会使用输入数据中的多个字段。输出csv每行有3-4个字段,我需要在(可能是)条形图中绘制1-2,1-3,1-4字段的图表。我希望能给出更好的图片。
编辑3:我修改了@ adirau的脚本,它似乎工作得很好。我已经走得够远了,我正在读取数据,发送到处理器线程池(伪处理,将线程名称附加到数据),并通过另一个收集器线程将它聚合到输出文件中。
PS:我不确定这个问题的标记,请随时纠正它。
对于那些大小为R的文件可能会变得棘手,因为它相当耗费内存。 R的图形可能性超过了Python的图形可能性(参见http://addictedtor.free.fr/graphiques/)。确保你检查R中的多线程(包裹降雪)。但最重要的是,你熟悉的代码。如果您对R不太熟悉,则很难对其进行优化。 – 2011-03-29 09:15:42
是的,这也是另外一点,我在R中几乎没有任何经验,和numpy和matplotlib一样,但我对python很满意。这也会影响我的选择。 – 2011-03-29 09:26:50