TOP N问题
1.如何在海量数据中找出重复最多一个
- 通过hash映射为小文件
- 通过hash_map统计各个小文件重读最多的并记录次数
- 对每个小文件重复最多的进行建立大根堆
2.上亿有重数据,统计最多前N个
-
内存存不下
-
通过hash映射为小文件
-
通过hash_map统计各个小文件重读最多的并记录次数
-
对每个小文件重复最多的进行建立大根堆并重复N次取走堆顶并重建堆操作
-
-
内存存得下
-
直接内存通过hash_map统计并建大根堆
-
重复N次取走堆顶并重建堆操作
-
3.海量日志数据,提取出某日访问百度次数最多的那个IP
-
将IP % 1000映射到1000个小文件中
-
相同IP会被映射到同一个文件
-
不会出现累加和更大情况
-
-
分1000次在内存处理小文件,得到频率最大IP(使用map统计)
-
对这1000个IP建立大根堆
4.1000w查询串统计最热门10个(同2)
5.1G的文件,里面1行1个不超过16字节的词。内存限制1M,返回频数最高前100
-
将单词 % 5000存入5000小文件
-
平均各文件约200K
-