这是我的问题陈述。我有3个大文本文件(每个<5GB),每个文件有1亿行(记录)。我想比较文件1和2并更新文件3中的值。每个文件中的单个记录如下所示:
PrimaryValue1 | OldValue1
PrimaryValue1 | NewValue1
Field1Value | Field2Value | Field3Value | OldValue1 | Field5Value .... | Field100Value
我对每条记录的所有内容都是 OldValue1 ,这对每条记录都是唯一的。现在,使用&#39; PrimaryValue1 &#39;,我需要使用文件1&amp; 2获取与 OldValue1 对应的 NewValue1 ,然后在file3中更新 NewValue1 以代替 OldValue1 。 OldValue和NewValue对于每条记录都是唯一的。
据我所知,如果我将所有文件都读入内存,那么我将能够比较和替换这些值。由于这可能是内存密集型的,我想知道是否有更好的方法来处理这种情况。
答案 0 :(得分:0)
File1和File2定义您必须应用于File3的替换。
我执行以下步骤:
newValues
。newValues
。replacement
。 newValues
删除条目(我猜,没有重复项)。replacement
地图。您需要内存用于替换,但主文件可以按顺序处理,只需要一个记录缓冲区。
如果出现OutOfMemoryError,在开始处理主File3之前,可能会在构建替换Map时发生这种情况。然后,您可以修改程序以处理File2的可管理块。算法的其余部分无需更改。