加载和分析大量数据

Rev*_*nzo 6 java groovy

因此,对于一些研究工作,我需要分析大量原始运动数据(目前几乎是数据,并且正在增长),并吐出定量信息和图表.

我使用Groovy编写了大部分内容(使用JFreeChart进行制图),当性能成为问题时,我用Java重写了核心部分.

问题是分析和绘图需要大约一分钟,而加载所有数据大约需要5-10分钟.可以想象,当我想对绘图进行细微更改并查看输出时,这会非常烦人.

我有几个想法来解决这个问题:

  1. 将所有数据加载到SQLite数据库中.
    优点:它会很快.如果需要,我将能够运行SQL来获取聚合数据.

    缺点:我必须编写所有代码.此外,对于某些图,我需要访问每个数据点,因此加载几十万个文件,某些部分可能仍然很慢.

  2. Java RMI返回对象.所有数据都被加载到一个根对象中,当序列化时,该对象大约为200兆.我不确定通过RMI传输200meg对象需要多长时间.(同一客户).

    我必须运行服务器并加载所有数据,但这不是什么大问题.

    主要职业:这应该花费最少的时间来写

  3. 运行加载数据的服务器,并在服务器vm内的命令上执行groovy脚本.总的来说,这似乎是最好的想法(实施时间与性能以及其他长期效益)

我想知道的是还有其他人解决了这个问题吗?

分析后(2011年3月29日):在写完这个问题几个月后,我最终不得不学习R来运行一些统计数据.使用R对于数据分析和聚合来说远比我正在做的更容易,更快捷.

最终,我最终使用Java来运行初步聚合,然后在R中运行其他所有内容.与使用JFreeChart相比,R制作漂亮的图表要容易得多.

Ztr*_*ger 5

如果您要获得大量数据,数据库的可扩展性非常高.在MS SQL中,我们目前在4分钟内对大约30GB的数据进行分组/求和/过滤(我认为大约有1700万条记录).

如果数据不会增长很多,那么我会尝试方法#2.您可以创建一个简单的测试应用程序,使用随机数据创建一个200-400mb的对象,并在决定是否要使用该路径之前测试传输它的性能.