大规模数据查重的多种方法,及Bloom Filter的应用
2009-10-04 14:33
393 查看
http://www.cnblogs.com/clive/archive/2009/09/14/filter_huge_number_of_data.html
1. 给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出:A,B文件共同的URL。
解法一:Hash成内存大小的小块文件,然后分块内存内查交集。
解法二:Bloom Filter(广泛应用于URL过滤、查重。参考http://en.wikipedia.org/wiki/Bloom_filter、http://blog.csdn.net/jiaomeng/archive/2007/01/28/1496329.aspx)
2. 有10个文件,每个文件1G, 每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。要你按照query的频度排序。
解法一:根据数据稀疏程度算法会有不同,通用方法是用Hash把文件重排,让相同query一定会在同一个文件,同时进行计数,然后归并,用最小堆来统计频度最大的。
解法二:类似1,但是用的是与简单Bloom Filter稍有不同的CBF(Counting Bloom Filter)或者更进一步的SBF(Spectral Bloom Filter,参考http://blog.csdn.net/jiaomeng/archive/2007/03/19/1534238.aspx)
解法三:MapReduce,几分钟可以在hadoop集群上搞定。参考http://en.wikipedia.org/wiki/MapReduce
3. 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16个字节,内存限制大小是1M。返回频数最高的100个词。
解法一:跟2类似,只是不需要排序,各个文件分别统计前100,然后一起找前100。
1. 给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出:A,B文件共同的URL。
解法一:Hash成内存大小的小块文件,然后分块内存内查交集。
解法二:Bloom Filter(广泛应用于URL过滤、查重。参考http://en.wikipedia.org/wiki/Bloom_filter、http://blog.csdn.net/jiaomeng/archive/2007/01/28/1496329.aspx)
2. 有10个文件,每个文件1G, 每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。要你按照query的频度排序。
解法一:根据数据稀疏程度算法会有不同,通用方法是用Hash把文件重排,让相同query一定会在同一个文件,同时进行计数,然后归并,用最小堆来统计频度最大的。
解法二:类似1,但是用的是与简单Bloom Filter稍有不同的CBF(Counting Bloom Filter)或者更进一步的SBF(Spectral Bloom Filter,参考http://blog.csdn.net/jiaomeng/archive/2007/03/19/1534238.aspx)
解法三:MapReduce,几分钟可以在hadoop集群上搞定。参考http://en.wikipedia.org/wiki/MapReduce
3. 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16个字节,内存限制大小是1M。返回频数最高的100个词。
解法一:跟2类似,只是不需要排序,各个文件分别统计前100,然后一起找前100。
相关文章推荐
- 大规模数据查重的多种方法,及Bloom Filter的应用
- C#程序脱离.net框架的多种方法与应用
- ajax中如何将utf-8编码的数据请求发送到gbk编码应用的解决方法
- extjs JSONStore的load事件/insert,add方法应用 如何动态改变显示数据
- 大规模数据处理Bloom Filter C++代码实现
- Android应用开发SharedPreferences存储数据的使用方法
- Android之Activity之间的数据传递-多种方法
- android应用开发SharedPreferences存储数据的使用方法
- 大规模数据处理Bloom Filter C++代码实现
- 比较详细的HC-SR04超声波传感器数据及机器人避障的应用方法
- 东华软件张涵诚:政府大数据应用的案例和数据价值释放的方法
- 在做app应用的时候,需要将数据提交到服务器去存储,那么方法可以参考如下
- Python:入门笔记之list slices计算方法、匿名表达式、CGI、数据类型及应用领域
- Android应用开发SharedPreferences存储数据的使用方法
- 用 Python 排序数据的多种方法
- JAVA进阶之旅(一)——增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法
- lucene 处理大规模数据的一些解决方法 katta--简介
- 多种sql技术的综合应用(行转列、定制、批量数据产生)
- 多种方式实现JS调用后台方法进行数据交互
- Android应用开发SharedPreferences存储数据的使用方法