大数据文件分析提取 一个用户访问日志,里边记录了IP登录信息,信息内容有登录时间和IP地址。现在要统计 (1) 每一天登录次数最多的1000个IP。以登录次数为序,从高到低排序 (2) 每一周登录次数最多的1000个IP。以登录次数为序,从高到低排序 每一天大概有10亿条IP信息记录。可以用什么样的数据结构?应该不是排序的问题,因为本书数据量太大,快速排序需要有具体的拆分方案!望各位前辈指点,感激不尽! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用map<ip,count>然后排序 宇量级还是插入到数据库在SQL吧 10亿条IP,大多都重复的,有效ip不多,就存内存中也没什么问题的。 对ipv4 最多三十二位,而且 很多私有的都不是独立IP 找出来,肯定要流的形式读文件啊。读出一行后,取得ip,存入map的key中,value开始为0,如果第二次找到此ip,就把以前的value加1,代码如:if(map.containsKey(ip)) map.put(ip,map.get(ip)+1);else map.put(ip,0); 楼主是不是不了解map的机制?网上搜一下。 用TreeMap貌似可以哈,存储不重复的IP,遇到重复的value+1,还能排序,但文件太大啦,现在要是想优化一下的话,咋才能稍提高下效率,就是说有个好的算法,比如说一个G的文件,都读到内存好像也不适合,咱先忽略硬件的提升哈! hadoop,mapreduce! 我也刚开始学习 10亿条记录不算多,看了你的描述,如果重复的IP不多(百万以下)则就用普通地HashMap一边读文件一边做统计。 感谢各位的参与,10楼“爱吃番茄”分而治之的思路是可行的,6楼“阿槑”给了我一个提醒大文件就拆分成小文件,然后分成N个统计,只是N当中的前1000个都有可能是最高的,最后把N个前1000个再做分析需要个好的算法,再有一天决定结贴,望各位再努力一下!谢谢! 经典java基础面试题 Java中关于new一个对象的问题,求大神解答,万分感谢 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b UTC格式的字符串转Date JFreeChart柱形图问题 Enumeration接口的一个小问题 菜鸟:求一个java统计总访问量的程序,在线等。。谢谢 求将一个字符串转换成另外一种格式的方法 那位大侠能告诉怎么向QQ中的好友发送信息?UP者有分 理解JDK和JRE过程中有一些不明白的地方 为什么Println输出的顺序有问题呢 java菜单选项事件怎么处理
然后排序
10亿条IP,大多都重复的,有效ip不多,就存内存中也没什么问题的。
对
ipv4 最多三十二位,而且 很多私有的都不是独立IP
else map.put(ip,0);
我也刚开始学习
大文件就拆分成小文件,然后分成N个统计,只是N当中的前1000个都有可能是最高的,最后把N个前1000个再做分析需要个好的算法,再有一天决定结贴,望各位再努力一下!谢谢!