(Huger, чем другие вопросы, lol) < /p>
Конкретная задача < /h2>
Я начинаю с двух гигантских входных текстовых файлов, содержащих множество строк с одним строковым значением на каждой строке. Я хотел бы написать программу Java, чтобы объединить содержимое этих двух файлов в один выходной текстовый файл, а также удаление любых дубликатов. Какой метод лучше всего для производительности?
о каких размерах данных мы говорим? Я сделал расчет сзади напина, используя меньший пример-файл, и файл 250 ГБ может иметь около 27 миллиардов линий (очень грубо), если он пропорционален. Мы можем представить, что значение на каждой строке составляет максимум из 20 символов, в противном случае оно будет отброшено. Я буду использовать компьютер с большим количеством памяти, но этого может быть недостаточно. И я буду отбрасывать любые строки, которые более 25 символов. Я упоминаю об этом, потому что хэшинг был воспитан в качестве метода дубликации проверки. Кажется, хэш для этих значений займет больше места, чем фактическое значение. Однако я понимаю, что более непосредственная проблема заключается в том, как справиться с большими размерами, и все, что я использую, чтобы проверить дубликаты или сортировку, не будет вписаться в память. Возможно, сначала сортируйте входные файлы, затем объединитесь вместе и отбросьте дубликаты за один проход. Выходной файл может быть отсортирован, не нужно поддерживать исходный порядок. < /P>
Я также проводил свое исследование. Но в конце он упоминает возможный способ сделать это с большим файлом (только одним файлом), который не вписывается в ОЗУ. Я не уверен, что полностью понимаю, и кажется, что сам механизм проверки также был бы очень большим и не вписывался в память, вопреки тому, что задумал автор. Сортировка сначала. < /p>
Какой метод вы предлагаете? Большое спасибо за вклад!
Подробнее здесь: https://stackoverflow.com/questions/797 ... duplicates
Объединение двух огромных текстовых файлов и удаления дубликатов [закрыто] ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение