我有以下格式的大型数据集:
总共有 3687 个目标文件。每个包含 2,000,000 条记录。每个文件大小为 42MB。
每条记录包含以下内容:
- 一个 id(整数值)
- 值 1(整数)
- 值 2(整数)
- 值 3(整数)
每个文件的内容不会以任何方式排序或排序,因为它们是在数据收集过程中观察到的。
理想情况下,我想为这些数据建立一个索引。(由 id 索引)这将意味着以下内容:
将一组 id 划分为可管理的块。
扫描文件以获取与当前工作组 id 相关的数据。
建立索引。
遍历下一个块并重复 1,2,3。
对我来说,这听起来不错,但来回加载 152GB 非常耗时,并且想知道最好的方法,甚至 Java 是否真的是用于此类过程的正确语言。
我的机器上有 256GB 的内存和 32 个内核。
更新: 让我修改一下,把 I/O 放在一边,假设文件在内存中的字节数组中。
解码具有 2,000,000 条记录且每条记录包含 4 个序列化的整数的 42MB 对象文件的最快方法是什么。