我有很多键值对(TB数据),可以从某些文件中读取。
为简单起见,我们假设键和值都是整数。
最后,我感兴趣的是使每个键都具有遇到的最高N值,并将它们再次作为键值对写入一些不同的文件中。
只要给定键中的最小3个值,输出文件中包含给定键的N个条目以上就没有问题。
保持文件满足上述条件,但是我正在尝试减小大小,因为某些键在输入中包含很多值,这些值不重要。
将所有数据保留在内存中显然不是一种选择。
因此,我正在寻找某种缓存。我可以在其中保存所找到的每个键的排序列表,并且一旦达到特定的大小限制,就可以将缓存中一半的条目刷新到输出中。番石榴的LoadingCache
似乎对我没有帮助,因为权重为computed at entry creation time, and are static thereafter.
我是否可以使用/实现特定的数据结构/算法,以帮助我解决问题?
答案 0 :(得分:0)
简单方法:
sort
实用程序可快速完成此任务。 (嗯,就像输入命令一样快。对TB级数据进行排序将需要一些时间。)大功告成。
如果数据分散在多个文件中,其中某个特定键的值可以存在于多个文件中,则您可以分别对每个文件进行排序,然后将多个文件合并在一起。同样,sort
可以为您做到这一点。
我不能保证上面的代码比自定义解决方案的执行速度快,但是我很自信地说,它的执行速度比您设计,编码,调试,测试然后运行自定义解决方案的速度快。