我正在尝试在 java 中将大量数据与 2 个文件夹条目 folder1 和 folder2 进行比较。每个文件夹包含几个文件,每个文件大小约为 10 MB。我在每个文件夹中有大约 100 个文件。每个文件都包含一个键值行,例如(每个文件夹总共大约有 5 亿行):
RFE023334343432-45,456677
RFE54667565765-5,465368
and son on..
- 第一步
首先,在我上面的示例中,从 folder1 中读取所有文件的每一行并将其加载到rocksdb中
key = RFE023334343432-45 and corresponding
value = 456677
- 第二步
一旦我的rocksdb 充满了folder1 数据,对于在folder2 中读取的每一行,我调用folder1 的rocksdb get() 方法来检查为folder2 行提取的密钥是否存在于rocksdb 中。当我不存在时,它返回 null。请注意,我不能使用rocksdb keyMayExist() 方法,因为当您操作大量数据时它会返回误报结果。
当 folder1 中的数据根据键值排序时,性能是正确的。
但是当输入数据未排序时,我的持续时间乘以 3(我使用 shell 命令对它们进行了混洗)。这很奇怪,因为在我的测试中,我将 unsort folder1 复制到 folder2 中(只是复制我的文件夹)。因此,即使文件夹 1 未排序,文件夹 2 也未排序,其方式与文件夹 1 完全相同。
我的问题是如何按键排序我的rocksdb?