日期:2014-05-20  浏览次数:20739 次

大数据文件分析提取
一个用户访问日志,里边记录了IP登录信息,信息内容有登录时间和IP地址。现在要统计 (1) 每一天登录次数最多的1000个IP。以登录次数为序,从高到低排序 (2) 每一周登录次数最多的1000个IP。以登录次数为序,从高到低排序 每一天大概有10亿条IP信息记录。可以用什么样的数据结构?应该不是排序的问题,因为本书数据量太大,快速排序需要有具体的拆分方案!
望各位前辈指点,感激不尽!

------解决方案--------------------
用map<ip,count>
然后排序
------解决方案--------------------
宇量级还是插入到数据库在SQL吧
------解决方案--------------------
探讨

宇量级还是插入到数据库在SQL吧

------解决方案--------------------
探讨

引用:

宇量级还是插入到数据库在SQL吧


10亿条IP,大多都重复的,有效ip不多,就存内存中也没什么问题的。

------解决方案--------------------
找出来,肯定要流的形式读文件啊。

读出一行后,取得ip,存入map的key中,value开始为0,如果第二次找到此ip,就把以前的value加1,代码如:
Java code

if(map.containsKey(ip)) map.put(ip,map.get(ip)+1);
else map.put(ip,0);

------解决方案--------------------
那楼主了解一下RandomAccessFile
------解决方案--------------------
探讨

用TreeMap貌似可以哈,存储不重复的IP,遇到重复的value+1,还能排序,但文件太大啦,现在要是想优化一下的话,咋才能稍提高下效率,就是说有个好的算法,比如说一个G的文件,都读到内存好像也不适合,咱先忽略硬件的提升哈!
引用:

楼主是不是不了解map的机制?

网上搜一下。

------解决方案--------------------
hadoop,mapreduce! 
我也刚开始学习
------解决方案--------------------
10亿条记录不算多,看了你的描述,如果重复的IP不多(百万以下)则就用普通地HashMap一边读文件一边做统计。