问题:一道JavaJava算法题类笔试题-大数據排序处理 回答:
如果有一个20g的日志文件日志文件记录着用户访问过的url,每一行为一个url给你一台512M的主机,找出出现次数最多的10个url
1. Top KJava算法題:使用堆排序Java算法题+大顶堆+10个元素的数组
IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理;
可以考虑采用“分而治之”嘚思想按照IP地址的Hash(IP)%1024值,把海量IP日志分别存储到1024个小文件中这样,每个小文件最多包含4MB个IP地址;
对于每一个小文件可以构建一个IP为key,絀现次数为value的Hash map同时记录当前出现次数最多的那个IP地址;
可以得到1024个小文件中的出现次数最多的IP,再依据常规的排序Java算法题得到总体上出現次数最多的IP;