(Huger, чем другие вопросы, lol) < /p>
Моя цель - взять два гигантских входных текстовых файла, содержащих множество строк с одним строковым значением на каждой строке, объедините их в один выходной текстовый файл, содержащий все значения, но без дубликатов. Использование Java.
О каких размерах данных мы говорим? Я сделал расчет сзади напина, используя меньший пример-файл, и файл 250 ГБ может иметь около 27 миллиардов линий (очень грубо), если он пропорционален. Мы можем представить, что значение на каждой строке составляет максимум 20 символов, в противном случае оно будет отброшено. Я буду использовать компьютер с большим количеством памяти, но этого может быть недостаточно. В настоящее время это 192 ГБ и модернизируемое ... так что я думаю, что бы максимал, что вы можете поместить в домашний компьютер в настоящее время, возможно. И у него будет быстрое и много больших хранилищ SSD. Это погранично, поэтому я не знаю, могу ли я рассчитывать на наличие целого файла в памяти. Первоначально я думал о том, как сделать дубликат проверки, чтобы сократить время обработки, так как я уверен, что захочу заставить его работать как можно быстрее. Однако я понимаю, что более непосредственная проблема заключается в том, как справиться с большими размерами, и все, что я использую, чтобы проверить дубликаты или сортировку, не будет вписаться в память. Возможно, сначала сортируйте входные файлы, затем объединитесь вместе и отбросьте дубликаты за один проход. Выходной файл может быть отсортирован. Он не должен поддерживать исходный порядок. < /P>
Я также проводил свое исследование. Но в конце он упоминает возможный способ сделать это с большим файлом (только одним файлом), который не вписывается в ОЗУ. Я не уверен, что полностью понимаю, и кажется, что сам механизм проверки также был бы очень большим и не вписывался в память, вопреки тому, что предназначался автор. /> Хорошо, я, вероятно, просто сделаю это сначала, если это не добавляет слишком много времени, поэтому я могу иметь количество входов в линии, количество дубликатов, выброшенных, подсчет строк, записанных на вывод и т. Д., А также хороший индикатор прогресса. < /p>
и я прочитал на внешней сортировке. />https://en.wikipedia.org/wiki/external_sorting
Это определенно может быть чем -то, что я попробую, если я сначала реализую сортировку. Напишите сортированные входные файлы. Затем пройдите один проход через оба отсортированных файла с сравнением для Duplicate проверки, перемещая линию в один файл за один раз по мере их продвижения в алфавитном порядке. Лучше?
Большое спасибо за вход!
Подробнее здесь: https://stackoverflow.com/questions/797 ... duplicates
Объединение двух огромных текстовых файлов и удаление дубликатов ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение