bigdata—在没有标准java库的情况下使用较低的ram大小进行大容量数据处理

3zwjbxry  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(177)

在一次技术讨论中,我被要求为下面的场景提供一个解决方案,而不使用任何处理类似情况的标准java库
如何处理不适合jvm可用内存的数组
你如何处理一个大文件,比如说20 gb,它不适合在可用内存中。
我可以想出下列解决办法
获取数组的长度,并使用部分长度处理数组(对于长度为/4的数组的Ex4迭代)
原始文件可以使用split命令(或在各自的操作系统环境中类似的命令)拆分为多个部分。处理单个较小的文件并生成中间结果(例如数据聚合)。完成单个文件处理后,根据中间结果文件的最终大小,一次性处理所有结果文件或再次应用迭代处理。
不过,我想知道是否有更好的方法。另外,如果这样的问题是不适合这个论坛,那么请让我知道,我会删除这个问题。虽然我发现了一些谷歌文章与解决方案,但它谈论的解决方案已经提供了一些图书馆,因此张贴在这里。

af7jpaap

af7jpaap1#

一种解决方案是堆外内存。可以Map到直接内存或磁盘。你可以从这里得到一些灵感https://mechanical-sympathy.blogspot.com/2012/10/compact-off-heap-structurestuples-in.html

相关问题