【发布时间】:2014-07-17 18:11:51
【问题描述】:
假设我正在研究大数据(如生物信息学),并且我选择使用 HPC 上出色的 Collections Map-Reduce 框架在 Java 中对其进行分析。如何处理超过2 31 ^ 1 - 个项目的数据集?例如,
final List<Gene> genome = getHugeData();
profit.log(genome.parallelStream().collect(magic);
【问题讨论】:
-
当然不是
List,可能是List<List>?您是如何读取数据的? -
您需要一个分布式解决方案。没有人会立即将庞大的数据集加载到内存中进行分析,只是内存不足(更不用说所需的计算能力了)。
-
@Kayaman 这不是真的。有针对分析具有数百 GB RAM 的内存单机中的大量数据的方案。是的,2^31 - 1 对于该内存量是非常可行的限制(假设单个记录大小为几个字节长)。
-
超过 2^31 个项目会消耗大量 RAM。部分加载。假设一个项目只是一个整数,它是每个项目 24 个字节(8 个用于引用,12 个字节用于对象头,4 个字节用于 int 值)。 2^31 个这样的整数项将占用 48 GB 的 RAM。
-
记住问题的关键部分...... OP 想要对他的数据使用 Collections Map-Reduce(这就是为什么我没有投票关闭作为我上面链接的问题的副本)。这可能会使某些建议不太可行。
标签: java data-structures