算法系列-大数据面试题-在超大文件中找出访问百度次数最多的IP
来源:互联网 发布:网络信息安全现状 编辑:程序博客网 时间:2024/05/21 17:05
1.题目描述
现有海量日志数据保存在一个超级大的文件中,该文件无法直接读入内存,要求从中提取某天出访问百度次数最多的那个IP
2.思考过程
(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
阅读全文
1 0
- 算法系列-大数据面试题-在超大文件中找出访问百度次数最多的IP
- 40w随机数据找出其中次数出现最多的那个数(类似于在10亿百度ip中找出访问次数最多的那个ip)
- [百度面试题]找出字符串中连续出现次数最多的子串
- 海量日志数据__怎么在海量数据中找出重复次数最多的一个;提取出某日访问网站次数最多的那个IP;提取出某日访问网站次数最多的前n个IP
- 算法系列-大数据面试题-两个大文件中找出共同记录
- 在apache的log中找出访问次数最多的N个IP。
- 算法:海量日志数据,提取出某日访问百度次数最多的那个IP
- 算法:海量日志数据,提取出某日访问百度次数最多的那个IP
- 在100G文件中找出出现次数最多的100个IP
- 提取访问百度次数最多的ip
- c#面试题:找出字符串中出现次数最多的字符及出现次数
- 从1亿个ip中找出访问次数最多的IP
- 从1亿个ip中找出访问次数最多的IP
- 从1亿个ip中找出访问次数最多的IP
- 算法系列-大数据面试题-大文件中返回频数最高的100个词
- 【面试题】找出字符串中连续出现次数最多的子串
- 海量日志数据,找出出现次数最多的IP地址。
- 海量日志数据,找出出现次数最多的IP地址。
- TensorBoard:可视化学习
- [leetcode]25. Reverse Nodes in k-Group
- hdu 1517 A Multiplication Game
- MYSQL5.6 主从复制
- TensorBoard:嵌入可视化
- 算法系列-大数据面试题-在超大文件中找出访问百度次数最多的IP
- 老哈佛H3的空调控制器的维修记录
- LAMP环境安装rabbitmq
- TensorBoard:图形可视化
- ubuntu编译安装nginx
- 机器学习中的梯度下降的本质理解
- ChangeDetectorRef
- 使用线程进行App的自动下载安装(带进度显示)
- Windows 10 电脑在播放声音后突然增大的解决办法