访问大型数据集和/或存储它们

时间:2012-02-16 08:19:54

标签: java dataset large-data-volumes

目前我正在处理大量用于计算的浮点/双数据集。我有一组文件来比较数据A和数据B,我想计算欧几里德距离/余弦相似度。 I.E.数据点1迭代数据B点以找到最近的邻居。

数据以文本文件形式提供 - 没有任何问题。存储/读取信息的理想方式是什么?

我必须为数据A中的所有点重复数据B.数据将存储为浮点数。每个数据点可能都有尺寸。一个文件最多可包含2mil浮点数。

我应该继续使用:

  1. 不断读取数据B的文件并解析字符串(我觉得效率非常低)
  2. 将数据存储在List(浮动数组)
  3. 使用Memory-Map IO?
  4. HashMap(我对HashMap相对较新,他们说集合的位置可能会随着时间的推移而改变,如果我只是在没有修改的情况下迭代,那么这些职位会改变吗?)

2 个答案:

答案 0 :(得分:1)

最基本的解决方案是:float[][]。这几乎可以肯定是最节省内存和最快速的解决方案,非常简单。

答案 1 :(得分:1)

2M浮动根本没有那么多,将它们全部放入列表中会完全没问题。 A的一个列表,B的一个列表。如果A和B是多维的,则float [] []就好了。如果您发现内存不足,请先尝试加载整个B,但一次加载一个数据点。