`

海量日志数据,提取出某日访问百度次数最多的那个IP

阅读更多
问题:一个的日志文件中存放IP地址,按照访问量对IP地址取访问量最大的IP,内存大小4M

解答:

1.由于内存大小的限制,分而治之

2.IP地址,0.0.0.0 ~ 255.255.255.255 ,

255(10) = 11111111(2)
共 4*8 = 32 bit 表示一个IP地址
每位上共两种变化,所以共  2^32 个不同的IP地址

拆分为1024文件
2^32 / 2^10 = 2^22 = 4M,每份文件中最多存放4M个不同的IP地址 

3.计算IP地址的HASH值

IP.hash % 1024 ,让IP地址落在不同的文件中

计算Hash值再取余,
类比HashMap ,
二次计算Hash值,即将key的hashCode 再进行计算,
是因为

4.在1024个小文件中,计算当前文件中的访问量最高的IP地址,可以使用HashMap的形式

5.再从得出的1024个结果中,选取访问量最高的IP地址

6.使用Hash(IP)%1024的原因
直接分配:即将大文件拆分成1024个小文件,平均分配,按照顺序依次将IP地址放入不同的文件中;缺点,大文件中IP地址是按照实际应用中的顺序存放的,可能存放在分配到不同的文件后,每个文件中都有相同的IP地址;而这些在不同文件中相同的IP地址,又可能不是改文件中数量最多的IP地址;
散列分配:能够保证把相同的IP地址分配到同一个文件中,不会出现统计遗漏的问题或混淆

博文参考:

如何从海量日志中提取访问最多的10个IP
10道Hadoop面试真题及解题思路
分享到:
评论

相关推荐

    提取出某日访问网站次数最多的那K个IP

    标题 "提取出某日访问网站次数最多的那K个IP" 涉及的是数据分析和数据处理方面的技术,主要目标是从海量的日志数据中找出在特定日期内访问网站频率最高的K个IP地址。在这个过程中,我们可以使用多种编程语言和工具来...

    大数据面试题目

    大数据面试题目的解决方法可以应用于实际的数据处理中,例如,在海量日志数据中,使用Bloom filter可以快速判断某个元素是否存在于一个集合中,而使用Hashing可以快速提取出某日访问百度次数最多的那个IP。在大数据...

    常用大数据量,海量数据处理方法,算法总结

    2. 海量日志数据,提取出某日访问百度次数最多的那个 IP。 3. 如何根据输入元素个数 n,确定位数组 m 的大小及哈希函数个数 k。 这些问题可以使用上述方法来解决,例如使用 Bloom filter 或 Hashing 等方法来查找、...

    大数据常见算法题.txt

    第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash...

    10道海量数据处理题目.pdf

    1. 提取出某日访问百度次数最多的IP 这是一个典型的分布式计算问题。首先,通过对IP地址取模将海量日志分散到多个小文件中,例如模1000,生成1000个小文件。然后,对每个小文件使用哈希映射(如hash_map)统计IP地址...

    十道海量数据处理面试题与十个方法大总结

    一、海量日志数据,提取出某日访问百度次数最多的那个 IP 这是一个典型的 hash 表应用问题,解决方案是使用 hash 表将 IP 直接存入内存,然后进行统计。在实际操作中,可以将大文件映射为多个小文件,然后找出每个...

    java排序算法使用及场景说明

    在这个场景中,我们有海量日志数据,问题是如何提取出某日访问百度次数最多的那个 IP? 解决方案 1:首先是这一天,并且是访问百度的日志中的 IP 取出来,逐个写入到一个大文件中,然后采用映射的方法,找出每个小...

    海量数据处理:十道面试题与十个海量数据处理方法总结

    **1、海量日志数据,提取出某日访问百度次数最多的那个IP** - **问题概述**: 给定一天内的海量日志数据,从中找出访问百度次数最多的IP地址。 - **解决方案**: - **初步思路**: 将所有IP地址写入一个大文件,考虑...

    大数据量,海量数据处理

    4. 给定海量日志数据,需要提取出某日访问百度次数最多的那个IP。解决方法是使用HashMap来统计每个IP的访问次数,然后使用堆排序来输出访问次数最多的IP。 5. 给定2.5亿个整数,需要找出不重复的整数,内存空间不...

    海量数据处理总结(大量数据处理)

    - **案例二:日志数据分析**:在海量日志数据中,提取出某日访问百度次数最多的IP。通过使用Hashing,将IP直接存入内存并进行统计,可以快速找出访问次数最多的IP。 - **案例三:整数去重**:在2.5亿个整数中找出不...

    java八股文整理,非常全面可靠

    对于海量日志数据,例如需要提取出某日访问百度次数最多的那个IP,可以使用映射的方法,即%1000将整个大文件映射为1000个小文件,然后逐个写入到一个大文件中,然后对每个小文件中的所有IP进行频率统计,最后在这...

    数据挖掘的一些题目

    4. 海量日志数据分析:有海量日志数据,要求提取出某日访问百度次数最多的那个 IP。解决方案是首先提取出这一天的日志中的 IP,然后使用映射的方法将其分割为 1000 个小文件,最后找出每个小文件中出现频率最大的 IP...

    SQL数据库对于海量数据面试题及答案.pdf

    海量日志数据,提取出某日访问百度次数最多的那个IP。 方案 1:首先是这一天,并且是访问百度的日志中的IP 取出来,逐个写入到一个大文件中。注意到 IP 是 32 位的,最多有个IP。同样可以采用映射的方法,比如模...

    十道海量数据处理面试题与十个方法大总结 面试必备

    提取某日访问百度次数最多的那个IP** **问题描述**:给定一天内的大量日志数据,需要从中提取出访问百度次数最多的那个IP。 **解决方案**:考虑到IP地址的数量有限,最多2^32个,可以考虑使用哈希表(如`hash_map...

    大数据量,海量数据_处理方法总结

    - 海量日志数据中,提取出某日访问百度次数最多的IP地址。由于IP地址总数有限,可以考虑使用哈希表将IP地址直接存入内存中,并进行统计。 #### 四、Bit-Map **适用范围**:适用于数据范围较小的情况,如电话号码等...

    各大单位的面试题

    从海量日志数据中,找出某天访问百度次数最多的IP地址。 #### 解答思路 - 使用哈希策略将日志数据分布到多个小文件中,例如通过IP地址的哈希值对1024取模,得到1024个小文件。 - 对每个小文件建立一个哈希表,统计...

    程序员大厂面试百度篇.pdf

    * 海量日志数据,提取出某日访问百度次数最多的那个IP(大数据处理) * 有10个文件,每个文件1G,每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。如何按照query的频度排序?(大数据处理) ...

Global site tag (gtag.js) - Google Analytics