【发布时间】:2018-12-07 19:16:13
【问题描述】:
我的问题如下:
- 我得到了一个包含大约 1500 亿个条目的 url 列表。
- 每个月我都会收到一批新的约 1500 亿条条目。
- 我应该删除重复项并存储其余部分。
- 与任务相比,这应该在一台单独且相当小的机器上完成(大约 32-64 Gb 内存可用 + 大量磁盘空间)。
- 我应该存储唯一的url(存储问题已经解决了)。
- 我为此任务选择的语言是 Java。
这不是面试问题或类似问题。我需要为一个商业案例这样做。
是否有可用的算法让我实现这个目标(最好在不到一个月的时间内)?我的第一个想法是 Bloom/Cuckoo 过滤器,但我希望尽可能保留所有 URL。
【问题讨论】:
-
你能定义唯一吗?
http://stackoverflow.com和http://stackoverflow.com/questions是唯一的吗?https://stackoverflow.com呢? -
@MyStackRunnethOver 这三个都被认为是独一无二的。不应对 URL 进行任何处理,它们已经过预处理/清理。
-
一个非常有趣的问题,但我认为它对 SO 来说太宽泛了。可能在软件工程网站上,或者可能是计算机科学(要求算法 或适当的数据结构)。鉴于数据量巨大,我可能会考虑使用 A) 一些强大的全文搜索引擎 B) 和/或框架,如 kafka。因为,最后:我可能是 一台机器 根本行不通。你宁愿需要一组机器一起工作......