处理大量POJO的最佳方法

问题描述 投票:0回答:2

我有一个不断增长的数据集(从第一天开始存储在google电子表格中),现在我想对其进行一些分析。我进行了一些基本的电子表格处理,当数据集<10,000时工作正常,但是现在我已经超过30,000行,进行任何更改时,刷新表格需要很长时间。

因此,基本上每个数据条目都包含以下字段(以及其他内容):

Name, time, score, initial value, final value

我的电子表格可以用作数据分析解决方案,例如为我提供名称包含字符串“ abc”且分数为<100的所有行。

但是,随着行数的增加,生成结果的时间越来越长。

因此,我想将所有数据加载到Java程序中(Java,因为这是我最熟悉的语言,并且希望以此作为一种有意义的方式来刷新Java技能。)

我还有一个输入变量,我的电子表格会在处理我逐步调整的数据以查看输出如何受到影响时使用的输入变量。但是,要获得针对此输入变量的每次增量更改的结果都需要花费很长时间。这是我要自动化的事情,因此我可以设置输入值的范围,增量步长,然后让系统为每个增量值生成输出。

我的问题是,将此数据加载到Java程序中的最佳方法是什么。我将数据保存在一个txt文件中,这样我就可以将每一行读入它自己的pojo中,并且当所有30,000行都加载到ArrayList中时,就开始处理它。有没有我可以使用的更有效的数据容器或方法?

java
2个回答
0
投票

如果您事先知道记录数,则每列使用一个数组(不能使用多维数组,因为每列具有不同的数据类型)将为您带来性能优势,但我怀疑这是不便之处。 3万条记录实际上并不多,要考虑的限制因素是内存。

顺带一提,有各种各样的csv阅读器,这个声称是faster than the rest

如果您追求原始读取速度,例如ssd上的kryo serialized数据结构将很难被击败,文本文件+ Java可能胜过数据库(实际上不确定)。从安全性和舒适性的角度(从技术上来讲),数据库可能值得考虑。在这种情况下,不必成为成熟的关系型人。


0
投票

如果您要处理一堆任意的(未指定的,可能是临时的)数据,而事实证明,使用电子表格的速度太慢,那么最好不要使用更好的工具或更适用的语言。

这里有许多可能性:

  • 将数据加载到SQL数据库中,然后使用SQL查询执行分析。有很多交互式数据库工具。

  • OpenRefine。从未使用过它,但据告知它功能强大且易于使用。

  • 学习Python或R及其关联的数据分析库。


可以用Java来实现所有这些并使它变得[[非常快,但是对于30,000条记录的数据集(IMO),这是不值得开发的。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.