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

大量数据处理问题
小弟现在有个特别的问题。关于数据处理的问题。
比如:

我现在手里有多个文件,每个文件里的数据格式是一样的。每个文件大小大约5mb左右,一共410个文件,文件大小1.99gb.为了确保这个程序在所有的机器上都可以运行,所以不可以使用数据库。

格式如下:

2010022509000018643064403132549021860430000

其中第14位到第24位为电话号码,我现在想将重复的号码去掉,留下不重复的号码。

现在小弟的做法:

1:首先将文件夹中的文件开始读取,读取方法使用BufferedReader.去重后写入1个临时文件,写入方法使用BufferedWriter。去重方法为hashset。因为每个文件中都有大量的重复数据,所以1.99个G的文件变成800MB左右的文件。耗时在5分钟左右。

2:然后将临时数据文件进行读取,因为不能保证文件和文件中没有重复数据,这个时候也需要去重。我使用的方式是hashset,这个时候读取的方法使用BufferedReader,在

while((data = br.readLine())!=null){
  。。。。
}

经行业务处理。在业务处理中我将我需要的信息使用BufferedWriter写入制定文件夹。

现在这个程序执行起来有2个问题

1:内存溢出,初步判断是hashset有长度限制。

2:程序执行速度奇慢。

我个人认为我的设计思路存在明显的问题,还有就是解决的方法也有明显的问题,请各位大虾帮助。。。。



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

今天试验了下昨天的架构,明显很失败。。。从新来过。思路还有待改进~!