Мне нужно закодировать эту задачу в java. У меня есть 2 больших файла размером около 5 ГБ, каждый из которых содержит текстовые данные из нескольких строк. Каждая строка представляет собой строку разделенных запятыми полей, например «имя, empId, обозначение, адрес, ..., и так далее до 30 полей». Мне нужно прочитать эти 2 файла и записать записи в другой файл с дополнительным полем, которое указывает, что данная строка данных изменена, не изменена, добавлена или удалена. НапримерFile diff файлов большого размера
FILE1
Том, E100, инженер
Рик, E200, инженер
File2
Том, E100, менеджер
Пол, E300, Клерк
ResultFile
Том, E100, менеджер Изменено
Пол, E300, Клерк, Added
Рик, E200, инженер Удаляется
подход я использовал это, чтобы создать карту из данных файла1 с использованием empId в качестве ключевой и всей строки данных в качестве значения (при условии, что empId уникален), а затем прочитайте каждую запись из файла2, чтобы проверить данные на карте (я не читаю весь контент файла2 в память , b ut только file1 для создания карты). Я использую BufferedReader/BufferedWriter для чтения и записи.
Этот подход работает отлично, но только для небольших файлов данных. Учитывая, что файлы данных, которые работают в GB, у моей программы заканчивается очень быстро, пытаясь создать карту.
Каким будет правильный подход для достижения этой задачи как с точки зрения памяти, так и с точки зрения скорости выполнения?
Спасибо, LX
Не могли бы вы получить файлы, заказанные ** empId **? Чем вам не нужно хранить какие-либо файлы в памяти. (Так что, возможно, сортируйте их forst by ** empId **). – MrSmith42
Связанный: http://stackoverflow.com/q/30653705/572670 – amit