100G超大文件合并排序
高洛峰
高洛峰 2016-10-22 16:33:16
0
1
949

目前想实现两个100G文件合并,日志文件,都有日期,日期会有所交集,如一份1日到10日,另一份5日到15日,所以合并后也需要对日期进行排序。

目标是,查询某一时间区段的信息,目前的打算是:

我可以知道每个文件大小和日起始时间,所以若文件过大,就分割它,然后获取分割小文件的的起始时间,时间区段只要稍加限制,同时由于log的连续性和记录频率不太高,就能确保就只有几个小文件包含了用户需要的信息,然后只返回那几小份的文件的信息,然后全部直接扔进内存排序都不怕,效率也可以。

但我想想,是不是也有办法,直接真的可以把2个100G合成一个200G的?或有什么更好的办法,目前在写模板的基本方法,想封装好一点以后不管了。但不知道这个要怎么玩。求教,谢谢!


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

提供个思路:我觉得你分割的思想其实挺好的,只是实际上并不需要真的分割,你要做的只是维护一个索引文件。就是说通过读一遍文件,每1000条(比方说),将1000条的起始文件偏移和结束偏移更这1000条的起始时间和结束时间关联起来。这样你可以得到一个索引文件。

时间1~时间2,文件1,offset1~offset2
时间3~时间4,文件2,offset3~offset4
...

将来你要查询的时候,先查索引文件,就可以知道需要的数据在哪个文件的什么区间里面了。因为你每个文件本身是按时间排序的,所以在建立索引的时候无需排序。


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板