首页新闻找找看学习计划

关于大数据的数据去重问题

0
[待解决问题]

我需要对200多万条数据进行一个去重的操作,数据存放在mongodb中,之前存放的时候是通过url地址来判断采集的信息是否存在,但是现在发现有些信息它们内容一样,但是url相同。所以想请问一下,有没有什么好的策略,或者算法,来帮助我设计本次去重

wylwyl的主页 wylwyl | 菜鸟二级 | 园豆:204
提问于:2018-06-04 21:43
< >
分享
所有回答(3)
0

自顶一下

wylwyl | 园豆:204 (菜鸟二级) | 2018-06-04 22:08
0

200万的数据,有这问的功夫,随便写两句代码,电脑都运行完去重了,不需要任何算法。

爱编程的大叔 | 园豆:30519 (高人七级) | 2018-06-05 10:52

我现在是有算法的,simhash判重后,还不够精确,还想再精确一点,所以在寻求更好的方法

支持(0) 反对(0) wylwyl | 园豆:204 (菜鸟二级) | 2018-06-05 10:54
0

200万数据量太小了,真不太需要什么算法。

最简单做法就是一致性哈希,相同的哈希值过滤掉就行了。具体一致性哈希算法到底是啥,去网上查查,很多算法,随便整一个就行了。

yhdino | 园豆:701 (小虾三级) | 2018-06-05 14:34

我又仔细看了一下你的提问,我觉得你可能有点笔误,我觉得你想问的问题应该是,你目前已经可以通过Url地址去重了,但是去重结果发现,有一些数据,他的大部分其他字段都一样,但是Url不同,你希望是将这样的数据也去掉。

具体算法啥的我也不懂,我个你一个参考方向,你可以试试。这个方法是我五年前用来去重企业名称用的,你看看合不合适你用。

简单做法就是将列对齐,一致性哈希这些字段,只保留第一列id。将结果放入二维数组中。

如这样的结构array[id][字段1][字段2][字段3][字段4]...,这里除了id以外,其他都是存放hashcode。

这样处理的好处就是你可以按任意列对整个数组进行排序,比如,你可以按照第2、第3、列来排序,也可以按照第3,第4列,第5列来排序。下面就简单了,只要遍历就知道那些有重,哪些没有。然后再筛出这些id,关联查询就行了。

速度不用担心,我试过了普通机器,200万的数组,很快。

具体排序方法,你去网上搜一下,是可以找到的。

支持(0) 反对(0) yhdino | 园豆:701 (小虾三级) | 2018-06-07 09:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册