有一个大小约为 5GB 的数据集。这个大数据集每行只有一个键值对。现在这需要读取数十亿次键的值。
我已经尝试过MapDB的基于磁盘的方法,但是它抛出ConcurrentModification Exception
并且还不够成熟,无法在生产环境中使用。
我也不想将它放在数据库中并进行十亿次调用(尽管可以在这里完成一定级别的内存缓存)。
基本上,我需要在 hadoop 工作步骤的映射器/归约器中访问这些键值数据集。
所以在尝试了很多东西之后,我们现在正在使用 SQLite。
以下是我们所做的:
试试Redis。看来这正是您所需要的。
我会试试Oracle Berkerley DB Java 版,它支持 Maps,既成熟又可扩展。
我注意到你用 elastic-map-reduce 标记了这个......如果你在 AWS 上运行,也许 DynamoDB 是合适的。
另外,我想澄清一下:这个数据集是您的 MapReduce 作业的输入,还是在 MapReduce 作业期间随机访问的补充数据集?