我已经开始使用以JSON格式到达的大型数据集。不幸的是,提供数据馈送的服务提供了不平凡数量的重复记录。另一方面,每条记录都有一个唯一的Id号码存储为64位正整数(Java long)。如何从大数据馈送中排除重复记录?
数据每周到达一次,每次交付约为10M条记录。我需要排除当前交付中的重复项以及之前批次中的记录。
攻击重复数据删除问题的蛮力方法是将Id号码推送到Java Set。由于设置接口需要唯一性,插入过程中的失败将表明重复。
现在的问题是:有没有更好的方法来寻找重复的长作为我导入记录?
我正在使用Hadoop来挖掘数据,所以如果有一种很好的方法可以使用Hadoop来重复记录,那将是一种奖励。
这是比Rolands更好的解决方案。 –
@salexander - 我可以为新批数据做到这一点,但是如何识别前几周现有记录的重复项。例如,以前的数据有ID [1..10];新数据包含[11,11,9]。 map/reduce作业会找到重复的11,但9在这个集合中是唯一的,但与整个集合相比不是这样。我知道我可以重新运行整个数据集,但这看起来很愚蠢。 – gras
在这种情况下,我们需要将所有密钥放在一个简化器中,这可能会减慢过程 – sunitha