我的任务是比较两个大的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
您的建议,不同的方法,策略和专业知识是最受欢迎的。
答案 0 :(得分:0)
我会尝试用
如果内存确实是您最关心的问题,那么它所需要的只是一些java主类,一些java nio和simple java sql
答案 1 :(得分:0)
我认为最好的方法是读取文件并创建表示文件结构的特定java bean的两个列表。这些bean可以实现Comparable,你可以编写一个方法,可以使用你编写的特定规则对列表进行排序和比较。