如何对10亿个QQ号进行去重?

libraco
  • 760

这是个虚拟的问题,假设我有一个TXT文件,里面有10亿个QQ号(一行一条),其中可能有千万级别重复的号码,如何最快的去重呢?

回复
阅读 8.6k
6 个回答

存进一个Map,然后遍历。
利用Map不存在相同key的特性。

内存够就很简单了,分段、多线程、Map。

我没试过这么大的量,楼主也没虚拟使用场景,所以我也虚拟一个答案

我会开一台oracle之类实例,设置唯一键,然后把这些QQ号导入进db,db报错的就是重复的,忽略错误继续跑

如果oracle也吃不消(我也不知道吃不吃得消),就切片,导入100张表,单表1000万行绝对吃得消,利用db排序后导出,再和其他文件拼合继续导入。

用位表示数
例如, 号码 {1,2,3,5,8,13} 可以表示为:0-1-1-1-0-1-0-0-1-0-0-0-0-1,先放入,然后读出

按位表示QQ号是否存在,如果QQ号最多为10位数字,那最多也就需要1000+MB的内存,怎么算都够了

顺序处理太慢的话可以用多台机器对文件分块处理,最后把处理结果按位取或就行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏