面试冲刺:25---海量日志数据,如何快速提取出某日访问网页次数最多的那个IP?

一、题目描述

  • 现在我们有一个网站,还有一个海量的日志数据,日志中记录了每次访问该网页的IP地址
  • 现问:如何在这些海量日志数据中快速的取出某日访问网页次数最多的那个IP地址

二、解决方案

  • 第一步:首先,要考虑日志的大小,这里给出的是海量日志数据,因此数据量很大,不能将日志读取到内存中进行查找;因此,只能通过文件解析查找
  • 第二步:因为是海量日志数据,因此可以考虑使用分而治之的方法;例如此处将海量的日志数据存储到1024个文件中(文件数量根据你自己的需求而定),之后按照每个IP的地址进行hash,hash函数f为f(IP)=IP%1024,然后将IP读入到对应的文件中
  • 第三步:对每个文件进行分析,可以构建一个hash_map,其中IP作为key,IP出现的次数作为value;并且标记每个文件中出现次数做多的那个IP地址
  • 第四步:现在1024个文件中出现次数最多的那个IP地址已经解析出来了,因此我们就可以对这个1024个IP进行比较了(此时任务就比较轻松了)

三、总结

  • 本次首先要考虑到的时不能在内存中进行操作,然后由于数据量大,可以采用分而治之、哈希等数据结构与算法来分析

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/107768296
今日推荐