弹簧批多输入连接

时间:2018-07-30 15:42:39

标签: java parallel-processing spring-batch

我们在这里尝试了一个“特殊”挑战。

我们有几个csv文件,它们通过id连接。 Bit让我们保持简单,只讨论两个文件:

persons.csv:

3, john, doe
1, janet, doe
2, chief, programmer

addresses.csv:

1, street1, city1
3, street2, city2
2, street3, city3

如您所见,我们需要将一个csv文件中的数据与另一个csv文件合并,以创建一个包含地址的人->并且该数据未排序

我的第一个想法:为每个文件创建读取器,处理器和写入器(我们目前仅在连接数据->我们要将其存储在消息日志中)。

我们有更多的文件和更多的数据。因此,当我们第一次读取所有数据并开始连接时,由于Java堆空间,我们会收到 OutOfMemoryException

现在是问题:

从文件收集数据时(也许)加入数据的正确方法是什么?有可能吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

我主张采用以下两种方法之一:

  1. 对文件排序-在文件处理中常见一种控制中断模式。如果只想将文件用作输入源,这是最佳选择。
  2. 将文件输入到临时表中-使用数据库将文件加载到临时表中,然后使用SQL进行联接。如果您无权访问syncsort之类的东西,这可能是更简单的选择。