十亿条记录的日志文件怎么找出其中访问量最多的站点

都市网达 发布于 2013/07/29 17:45
阅读 635
收藏 1
十亿条记录的日志文件怎么找出其中访问量最多的站点,排序,服务器内存:16G
加载中
0
红薯
红薯
这得看这些日志文件是什么格式的,Access Log ?
都市网达
都市网达
回复 @红薯 : 我也想自己分析,文件太大了,不好解决
红薯
红薯
回复 @都市网达 : 不是标准数据只能自己写程序分析了
都市网达
都市网达
里面就记录了ip,域名,有效数据
红薯
红薯
回复 @都市网达 : 10亿条数据不算太多,如果是 access log ,用 awstats 统计个一两天数据也就出来饿了
都市网达
都市网达
通过Ip来统计域名的访问次数
下一页
0
阿诶么刚阿
kiwivip
kiwivip
正解~
0
凯文加内特
凯文加内特

引用来自“孙小超”的答案

hadoop/hive
正解
0
都市网达
都市网达
自己写程序有好的解决方法没有
0
平安北京
这要的是算法吧
0
拉风的道长
拉风的道长
多线程搞起
0
洪文军

域名当KEY,建立一个容器。  unordered_map

然后容器里计数了

0
中山野鬼
中山野鬼

引用来自“孙小超”的答案

hadoop/hive
和它有毛关系。哈。不考虑性能,这是逻辑设计问题,考虑性能则是平台优化问题。
0
狮子的魂
狮子的魂

可以将大文件拆分成n个小文件, 再逐个处理.

//大概思路如下: 

n = 要拆分的小文件个数(n要足够大确保得到的小文件的内容可以存入内存)

while ( ( line = 从大文件中读取一行 ) != NULL ) {

    url = 从line中得到访问站点的域名

    //得到小文件的序号
    idx = hash(url) % n;

    //将该访问记录写入到第idx个小文件中
    write(第idx小文件, url);

}

这样确保了, 对同一个站点的访问记录一定在同一个小文件中.

再使用hash来处理单个小文件, 得到每个小文件的最高访问量站点.

再统计下n个小文件得到所有最高访问量站点.

hash函数的选择会直接影响过程的性能, BKDR哈希分散效果和速度都很不错.


返回顶部
顶部