您的位置:首页 > 其它

海量数据处理问题

2018-03-02 16:27 253 查看
1.给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?
将100G的log file分成1000份
相同的Ip必定会在同一个小文件里
在每个文件里找出出现次数最多的ip

将找出来的1000个最多ip进行比较,找出最多的一个



2.给定100亿个整数,设计算法找到只出现一次的整数 
给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集 

个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数
在位图中,每个元素为“0”或“1”,表示其对应的元素不存在或者存在。



找到出现次数不超过2次的所有整数,变形位图,让每个数用两位来标记:

        00:0个         01:1个        10:2个        11:多个
使用位图以及位图的变形:http://blog.csdn.net/qq_35402412/article/details/79415172

3.给两个文件,分别有100亿个query,我们只有1G内存,如何找到两个文件交集?分别给出精确算法和近似算法


[b]精确算法
[/b]
        假设1个query只有30bites,100亿个为300G,我们只有1G内存,并且有两个文件,将两个文件分别切分1000份;

相同的ip%1000,必定会放到相同小文件中,则相交的结果即 {A0&B0,A1&B1...A999&B999}



近似算法 

4000

    使用布隆过滤器,将A切分后存入布隆过滤器,用B来依次进行对比,若找到,则这个query为交集

如何扩展BloomFilter使得它支持删除元素的操作 
    对每一位引用计数,删除后只要改它的计数



如何扩展BloomFilter使得它支持计数操作
    引入计数,则不能使用位图,将BitMap _bm改为size_t *_bm;
typedef struct{  
    //BitMap _bm;  
    size_t *_bm;

    HASH_FUNC hashfunc1;  
    HASH_FUNC hashfunc2;  
    HASH_FUNC hashfunc3;  
}BloomFilter; 

倒排索引

    给上千个文件,每个文件大小为1K—100M。给n个设计算法对每个词找到所有包含它的文件,你只有100K内存

搜索引擎的方法,将文件中的词存入哈希表,在找到的文件链到相应名词上

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: