现在碰到了一个难题哈,就是我们公司要分析大量的日志文件,分别放在不同的文件夹,但是这个日志被压缩成gz格式。而我的任务就是分析日志里面的某些字段。我原来想的流程是多线程读取这些文件,然后进行解压,换成流来处理,但是不懂的该如何进行多线程分析?

解决方案 »

  1.   

    文件名为key,线程为value 找个Map存。 把这堆线程放线程池里。每个线程找个独立的文件解压到指定目录下,并分析里面的文件。另外,怎么个分析法? 有没有速度什么的要求?
      

  2.   

    回复2楼:
    解压出来到指定的目录,不行,因为本身那个日志文件差不多有很多很多,差不多以T为单位,已经几乎把硬盘占满,我们不能进行解压出来。速度就是我们至少要求5分钟内搞定。。我最想问的是如何保证多线程在工作的时候,不会读取到相同的文件。
    回复3楼:
    这个建索引无用,我要分析全部的日志文件,索引只是更快的去搜索,而不是更快的去读取。
    我现在又有了点思路,大家帮忙看一下,根据2楼的启发。
    第一我先遍历所有的文件,但是先不进行分析,利用递归先存入一个LinkedList当中,然后分析有多少个压缩文件,进行平均,然后开启线程池100个或者更多,然后利用线程池处理每个平均部分?不知道大家有没有试过,这样可行?
      

  3.   

    1000GB/300S=3.333GB/S
    每秒最少得讀3GB的數據,硬盤有這麼快嗎
      

  4.   

    是zip格式的话,解一部分 分析完 再解一部分就行。
      

  5.   

    这边我自己总结一下吧,我这边说的意思是说,分析6T的文件,是指找出符合条件的几千个文件吧,而且我发现多线程读取文件不实际,因为磁盘的IO读写必定是单线程,除非你有多块硬盘。所以唯一要想的办法不是多线程去读取文件了,而是只能放在怎么提高处理文件的效率上了。。