大数据问题总结
大数据与空间限制问题 statement:本篇文字是看书(最后有介绍)的总结,仅限于想法,没有代码实现。 1. 布隆过滤器:100亿个黑名单网页,使用额外空间不超过30GB,允许万分之一失误率。 常见于建立黑名单时过滤使用。使用多个(就k吧)相互独立的优秀的hash函数,创建一个m个bit的数组,先将数据进行k次hash,对结果%m,那么每个数据就可以在bit数组中置多个1(可能是k个也可能少于k个),这样在验证的时候,就可以在进行k次hash计算,然后判断bit数组中的对应位是否被置1,如果全部为1,可以认为是命中,在名单中,进行相应的处理。 2. 使用2GB内存找到20亿个整数中出现最多的数 20亿个整数,假定32位=4B,也要8GB内存才能一次性处理(还只是读入内存),现在个人机内存也才差不多8GB,当然服务器肯定是可以处理的,采用哈希表,key=4B,value=4B(大概需要16GB内存,然后读入数字,查找统计数和词频,最后遍历找到最大的)。然,现在要求2GB内存找出出现最多的数,只能先利用hash函数进行分块,具体分块的数目由数据量和内存大小来定。比如目前2GB内存,按照极端情况来算,所有数据都不同,或者只有一个出现两次,需要8B*20亿=16GB=2GB*8,可以分为8块,或者16块。按照16快的分法,每个小文件大小会来到1GB,2GB的内存当然可以处理