如何使用Spring Batch比较两个未分类的大文件?

时间:2016-04-08 14:45:58

标签: java memory spring-integration spring-batch file-comparison

我的任务是比较两个大的csv文件,并将比较结果写出一个新文件。文件1有200万行,文件2也有200K或更少。两者都有200列。文件未排序,可以按任何顺序排列。我使用的是Java 8和Spring Version 4。

问题

我在我的项目中使用Spring Batch,有什么方法可以使用Spring Batch自定义ItemReader和ItemWriter来实现这一点,还是应该使用tasklet然后使用普通Java代码来比较文件?我也想以最快的方式做到这一点。数据量真的很大可能是2-4 Gigs所以我不想把它加载到内存中。文件结构如下所示。

File1:
    regn_nbr,name,address1,countrycode,regn_date
    2345,John,4332 JFK Boulevard,US,02-12-2011
    2347,mark,4332 Maryland Avenue,US,04-27-2015
    2348,Smith,4332 JFK road,US,07-30-2011
    2302,Andy,4332 JFK lane,US,06-01-2010

File2:
    regn_nbr,name,address1,countrycode,regn_date
    2345,John,4332 JFK Boulevard,US,02-12-2011
    2302,Andy,4332 JFK lane,US,06-01-2010
    2911,Peter,12烛光,MX,01-01-2010
    2348,Smith,4332 JFK road,US,07-30-2011
    2347,mark,4332 Maryland Avenue,US,04-27-2015

您的建议,不同的方法,策略和专业知识是最受欢迎的。

2 个答案:

答案 0 :(得分:0)

你确定你需要一个特殊的程序吗?

我会尝试用

如果内存确实是您最关心的问题,那么它所需要的只是一些java主类,一些java niosimple java sql

答案 1 :(得分:0)

我认为最好的方法是读取文件并创建表示文件结构的特定java bean的两个列表。这些bean可以实现Comparable,你可以编写一个方法,可以使用你编写的特定规则对列表进行排序和比较。