一道经典大数据面试题(2)——如何找出访问百度最多的IP

本文介绍了一种从海量日志数据中提取出某天访问百度次数最多的IP地址的方法。通过一次遍历筛选出目标日志并利用哈希技巧将数据分散存储,确保每个子文件都可以被加载到内存中进行高效处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

        现有海量日志数据保存在一个超级大的文件中,该文件无法直接读入内存,要求从中提取某天访问百度次数最多的那个IP。

分析解答:
        由于这道题只关心某一天访问BD最多的IP,因此可以首先对文件进行一次遍历,把这一天访问BD的IP的相关信息记录到一个单独的文件中。接下来可以用上一篇介绍的方法来求解。其求解思路是一样的。唯一需要确定的是把一个大文件分为几个小文件比较合适。以IPV4为例,由于一个IP地址占用32位,因此最多会有2^32=4G种取值情况。如果使用hash(IP)%1024值,那么把海量IP日志分别存储到1024个小文件中。这样,每个小文件最多包含4M个IP地址。如果使用2048个小文件,那么每个文件会最多包含2M个IP地址。因此,对于这类题目而言,首先需要确定可用内存的大小,然后确定数据大小。由这两个参数就可以确定Hash函数应该怎么设置才能保证每个文件的大小都不超过内存的大小,从而可以保证每个小的文件都能被一次性加载到内存中。

转载于:https://my.oschina.net/u/4167465/blog/3077151

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值