Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问和/或存储大型数据集_Java_Dataset_Large Data Volumes - Fatal编程技术网

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

Java 访问和/或存储大型数据集,java,dataset,large-data-volumes,Java,Dataset,Large Data Volumes,目前,我正在处理大量用于计算的浮点/双精度数据集。我有一组文件来比较数据a和数据B,我想计算欧几里德距离/余弦相似性。即,数据A点1通过数据B点进行迭代,以找到最近的邻居 数据在文本文件中给出-没有问题。存储/读取信息的理想方式是什么 我必须对数据A中的所有点重复数据B。数据将作为浮点存储。每个数据点可能都有尺寸。一个文件最多可以包含大约2mil浮点 我是否应该开始使用: 不断地读取数据B的文件并解析字符串(我觉得这是非常低效的) 将数据存储在列表(浮点数组)中 使用内存映射IO HashMap

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

数据在文本文件中给出-没有问题。存储/读取信息的理想方式是什么

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

我是否应该开始使用:

  • 不断地读取数据B的文件并解析字符串(我觉得这是非常低效的)
  • 将数据存储在列表(浮点数组)中
  • 使用内存映射IO
  • HashMap(我对HashMap比较陌生,他们说集合的位置可能会随着时间的推移而改变,如果我只是在没有修改的情况下迭代,位置会改变吗?)

  • 基本解决方案是最好的:只需一个
    float[][]
    。这几乎可以肯定是内存效率最高、速度最快的解决方案,而且非常简单。

    2M浮点值一点也不多,将它们全部放在一个列表中就可以了。一个列表用于A,一个列表用于B。如果A和B是多维的,则float[][]就可以了。如果发现内存不足,请先尝试加载整个B,但每次只加载A中的一个数据点。

    我不明白为什么一个简单的
    float[][]
    数组在这里不起作用。你似乎比我更擅长数学,所以如果将float存储在数组中,请尝试估计所需的内存:float是4字节,你有两百万个。这就产生了800万字节:8Mbs。储存在记忆中的花生。即使数据结构更需要内存,并且将每个浮点所需的内存乘以10,它仍然只能产生80Mbs。还是微不足道的。哦,我忘了添加数据集中的点可能会丢失,从而使数据集不完整。因此,我要么1)浏览文件,找到最大维度和类别2)使用列表。实际上,您认为在创建已确认和定义的2D数组或使用列表之前扫描一次文件会减少哪些开销?很抱歉,我遗漏了导致上述问题的其他信息,如果您能解释一下,我们将不胜感激。或者,我遗漏了导致上述问题的其他信息,如果你能解释一下,我会很感激的