gpt4 book ai didi

java - 通过大量键值对进行过滤和排序(java)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:36:34 28 4
gpt4 key购买 nike

我有一组非常大的键值对(TB 级数据),从一些文件中读取。

为简单起见,我们假设键和值都是整数。

最后,我感兴趣的是让每个键都具有遇到的最高 N 个值,并将它们再次作为键值对写入一些不同的文件。

如果输出文件包含给定键的 N 个以上条目,只要其中包含最小的 3 个值,就没有问题。

按原样保留文件满足上述条件,但我正在尝试减小大小,因为一些键在输入中有很多值,这不是我们感兴趣的。

将所有数据保存在内存中显然不是一种选择。

因此我正在寻找某种缓存。我可以为找到的每个键保留一个排序列表,一旦达到特定的大小限制,我只需将一半的条目从缓存刷新到输出。 Guava 的 LoadingCache 在这里似乎对我没有帮助,因为权重是在条目创建时计算的,此后是静态的。

是否有我可以使用/实现的特定数据结构/算法可能对我有帮助?

最佳答案

简单的方法:

  1. 对原始文件进行排序您的排序标准是键升序,值降序。 Linux sort 实用程序可以快速完成这项工作。 (好吧,输入命令的速度很快。对数 TB 的数据进行排序需要一些时间。)
  2. 编写一个程序,按顺序遍历文件并保存前 N 个值。

大功告成。

如果数据分布在多个文件中,其中特定键的值可以在多个文件中,那么您可以分别对每个文件进行排序,然后将多个文件合并在一起。同样,sort 可以为您完成这项工作。

我不能保证上述内容的执行速度会比自定义解决方案快,但我非常有信心地说,它的执行速度会比您设计、编码、调试、测试然后运行自定义解决方案的速度快。

关于java - 通过大量键值对进行过滤和排序(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56836783/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com