海量日志数据,提取出出现次数TopN的ip列表

IP取值范围为:0.0.0.0~255.255.255.255 共有 256^4~4G个IP,一般采用“分而治之”的策略处理这种海量数据。

方法一:分而治之

1、文件切分

    将4G个IP 通过hash运算(保证相同的IP分配到同一个文件),分配到1024个小文件中,每个文件最多包含 4G/1024=4M个Ip,然后依次处理每个小文件的数据。

2、统计每个IP出现的次数

    每个小文件的处理方式:构造一个HashMap(IP->出现的次数),用于统计小文件中每个Ip出现的次数

3、输出每个小文件的TopN

    使用容量为TopN的最大堆,输出每个文件出现次数TopN个IP

4、输出全局TopN Ip

    将TopN*1024个IP 输入到一个TopN的最大堆,计算出全局出现次数TopN的Ip

方法二:使用spark等大数据计算框架

使用mapreduce、spark等大数据框架处理大数据,本质上也是分而治之的思想,将大批量数据切分成小批量数据,分发到不同的机器计算,然后将计算结果汇总。


更多精选文章
标签: topn、ip、分而治之、次数、4g
一个创业中的苦逼程序员
笔试题


刷题


简历模板


AI算法


大数据


内推


推荐阅读:
阿里巴巴笔试面试大全
腾讯笔试面试大全
百度笔试面试大全
今日头条笔试面试大全
网易笔试面试大全
Google笔试面试大全
更多笔试面试大全
隐藏