算法系列-大数据面试题-在超大文件中找出访问百度次数最多的IP
2017-08-16 12:26
459 查看
1.题目描述
现有海量日志数据保存在一个超级大的文件中,该文件无法直接读入内存,要求从中提取某天出访问百度次数最多的那个IP2.思考过程
(1)面试中若题目提到大文件等,其实就是告诉你数据量大,不能一次性加载到内存中,而实际中我们就需要估算。既然是要对访问百度次数的ip做统计,我们最好先预处理一下,遍历把访问百度的所有ip写到另一个文件a中(2)ip用32位表示,所以最多有2^32个不同ip地址。同样的,当内存不能一次性加载数据时,我们就需要考虑分治法。
step1:采用hash映射(hash(ip)%1000)分别把结果保存到小文件a0....a999中。有人可能会问,这里一定要用1000吗?当然不一定,需要估算,比如若文件a总共320G远远大于4G内存,我们就需要分块(hash映射),若分为1000块,则每块大约300M,再读入内存就没问题了。
step2:可以采用hash_map进行频率统计,找出每个小文件中出现频率最大的IP。对于每一个小文件ai,具体操作如下:创建hash_map,遍历小文件中每条记录。对于每条记录,先在hash_map中搜索,若有,将hash_map中记录count+1,若没有,插入hash_map
step3:在这1000个最大的IP中,找出count最大的ip
相关文章推荐
- 算法:海量日志数据,提取出某日访问百度次数最多的那个IP
- 算法:海量日志数据,提取出某日访问百度次数最多的那个IP
- 40w随机数据找出其中次数出现最多的那个数(类似于在10亿百度ip中找出访问次数最多的那个ip)
- 海量日志数据,提取出某日访问百度次数最多的那个IP。
- 海量日志数据,提取出某日访问百度次数最多的那个IP。
- 海量日志数据__怎么在海量数据中找出重复次数最多的一个;提取出某日访问网站次数最多的那个IP;提取出某日访问网站次数最多的前n个IP
- 百度面试题:从海量日志中提取访问百度次数最多的IP
- 算法系列-大数据面试题-两个大文件中找出共同记录
- 海量日志数据提取某日访问百度次数最多的那个IP的Java实现
- 海量日志数据提取某日访问百度次数最多的那个IP的Java实现
- 海量日志数据,提取出某日访问百度次数最多的那个IP。
- 海量日志数据,提取出某日访问百度次数最多的那个IP
- 海量日志数据,提取出某日访问百度次数最多的那个IP。
- 海量日志数据,提取出某日访问百度次数最多的那个IP。
- 海量日志数据提取某日访问百度次数最多的那个IP的Java实现
- 海量日志数据,提取出某日访问百度次数最多的那个IP的C++实现源代码
- 在apache的log中找出访问次数最多的N个IP。
- 提取出某日访问百度次数最多的那个IP
- 提取出某日访问百度次数最多的那个IP
- 提取出某日访问百度次数最多的那个IP