Как сжатый файл читается во время распаковки?

Как сжатый файл размером 5 ГБ записывается в память и сжимается? Нужно ли читать весь файл перед распаковкой? Мой вопрос связан с обработкой сжатых файлов в Hadoop, который не может разделить обработку, как для несжатых файлов. Как насчет bzip2? какие-либо различия?

Спасибо,

2 ответа

Нет, 5 ГБ не нужно читать в память. Вы можете читать в байтах за раз, если хотите, и распаковывать их таким образом. gzip, bzip2 и все известные мне форматы сжатия являются потоковыми форматами. Вы можете читать мелкими битами и распаковывать их последовательно, никогда не возвращаясь в файл назад. (Формат.ZIP имеет в конце информацию заголовка, поэтому распаковщики обычно ищут оттуда записи назад. Однако это не требуется, и файл.ZIP может быть сжат и распакован как поток.)

Разархивированные файлы не разделяются, что означает, что в mapreduce всегда будет только 1 картограф, считывающий файл, поэтому перед установкой в ​​HDFS рекомендуется сначала разархивировать его. bzip-файлы разделяемые, и они лучше подходят для Hadoop, чем gzip-файлы.

Другие вопросы по тегам