Я пишу ETL приложение. Его функция состоит в том, чтобы получать большой объем данных из источника (например, много гигабайт), обогащать / преобразовывать его и использовать в архиве my-transformed-data.zip , содержащем как «хороший» файл данных и отфильтрованный «плохой» файл данных.
До сих пор я использовал потоковые методы для загрузки из источника и выполнения преобразований, достигая очень низкой нагрузки на память. Теперь проблема заключается в том, что эти два файла архивируются вместе в потоковом режиме для передачи клиенту.
Исследованные параметры:
A ZipOutputStream (с несколькими putNextEntry из ZipEntry) сработал бы отлично, если бы я мог сначала передавать все хорошие данные, а потом - плохие, но это не так, и для сортировки источника в этот формат потребовались бы большие затраты памяти / хранилища, которых я определенно хочу избежать.
Java 7 принес с собой пакет NIO, который, как мне кажется, предлагает некоторые виды функций, которые мне требуются ( например, запись в архив одновременно ), но он не может видеть способ передать этот файл по потоку, а не записать на диск поддерживать низкое использование памяти и памяти и получить заархивированный файл с двумя (или лучше N) файлами внутри него?
Мои общие сведения Выступление по архивированию и файловым системам довольно младшее, поэтому любые косвенные советы приветствуются.