распаковать большой файл .gz

Мне нужно распаковать файл transaction.gz , загруженный с Kaggle; приблизительно (2,86 ГБ), 350 миллионов строк, 11 столбцов.

Я пробовал на RStudio, Windows Vista, 32 бита, ОЗУ: 3 ГБ:

  транзакции  

Но я получаю это сообщение об ошибке на консоли

 > transaction  write.table (transaction, file =" E:/2014/Proyectos/Kaggle/transactions.csv ") Ошибка: не удается выделить вектор  размером 64,0 МБ  

Я проверил этот случай, но у меня он не сработал: распаковать файл gz с помощью R

Буду признателен за любые предложения .


Этот файл распаковывается в CSV-файл размером 22 ГБ. Вы не можете обработать все это сразу в R на своем компьютере с 6 ГБ, потому что R необходимо прочитать все в памяти. Лучше всего обрабатывать его в СУБД, например postgresql. Если вы намерены использовать R, вы можете обрабатывать его фрагментами, считывая управляемое количество строк за раз: читать фрагмент, обрабатывать его и затем перезаписывать следующим фрагментом. Для этого data.table :: fread будет лучше, чем стандартная read.table .

Да, и не надо! t распаковать в R, просто запустите gunzip из командной строки, а затем обработайте csv. Если вы используете Windows, вы можете использовать winzip или 7zip.



/xopen

xopen

Этот небольшой модуль Python предоставляет xopen , которая работает как встроенная функция open , но также может работать со сжатыми файлами. Поддерживаемые форматы сжатия: gzip, bzip2 и xz. Они автоматически распознаются по расширению файлов .gz, .bz2 или .xz.

Основное внимание уделяется максимальной эффективности для всех поддерживаемых версий Python. Например, xopen использует pigz , который является параллельной версией gzip , для открытия файлов .gz , что быстрее чем с помощью встроенной функции gzip.open . pigz может использовать несколько потоков при сжатии, но также быстрее при чтении файлов .gz , поэтому он используется как для чтения, так и для записи, если он доступен. Для уровней сжатия gzip от 1 до 3, igzip используется для еще большего ускорения.

Для случаев использования, когда требуется использование только основного потока, можно использовать xopen с thread = 0 код>. Это будет использовать python-isal (который связывает isa-l), если установлен python-isal (автоматически в системах Linux, поскольку это требование). Для получения инструкций по установке python-isal посетите домашнюю страницу python-isal. Если python-isal недоступен, используется gzip.open .

Этот модуль изначально был разработан как часть Cutadapttool, который используется в биоинформатике для манипулирования данными секвенирования. Он успешно используется в этом программном обеспечении в течение нескольких лет.

xopen совместим с Python версии 3.6 и более поздних.

Использование

Откройте файл для чтения:

 из xopen import xopenwith xopen ('file.txt.xz') как f: content = f.read () 

Или без диспетчера контекста:

 from xopen import xopenf = xopen ('file.txt.xz') content = f.read () f.close () 

Открыть файл в двоичном режиме для записи:

 из xopen import xopen с xopen ('file.txt.gz', mode = 'wb') как f: f  .write (b'Hello ') 

Credits

Имя xopen было взято из одноименной функции C в theutils.h, который является частью BWA.

Кайл Бошам внес свой вклад в поддержку добавления файлов в файлы.

Рубен Вордерман внес улучшения, чтобы ускорить чтение и запись сжатых файлов в формате gzip.

Бенджамин Вайсвил внес вклад su pport для определения формата из содержимого.

Некоторые идеи были взяты из проекта canopener. Если вы также хотите открывать файлы S3, вы можете вместо этого использовать этот модуль.

Изменения

v1.1.0

  • Поддержка Python 3.5 прекращена.
  • В системах Linux python-isalis теперь добавлено как требование. Это значительно ускорит чтение файлов gzip, когда не используются внешние процессы.

v1.0.0

  • Если установлено, Программа igzip (часть Intel ISA-L) теперь используется для чтения и записи файлов, сжатых с помощью gzip, на уровнях сжатия 1-3, что приводит к значительному ускорению.

v0.9.0

  • Если расширение имени файла, открываемого для чтения, недоступно, содержимое проверяется (если возможно) и используется для определения сжатия применяется формат.
  • В этом выпуске отсутствует поддержка Python 2.7 и 3.4. Теперь требуется Python 3.5 или более поздняя версия.

v0.8.4

  • При чтении файлов, сжатых с помощью gzip, принудительно используйте pigz , чтобы использовать только один процесс. pigz в любом случае не может использовать несколько ядер при распаковке. По умолчанию он будет использовать дополнительные процессы ввода-вывода, что немного сокращает время настенных часов, но увеличивает время процессора. Одноядерная распаковка с помощью pigz все еще примерно в два раза быстрее, чем обычный gzip .
  • Разрешить thread = 0 для указания того, что не следует использовать внешний процесс pigz / gzip (тогда обычный gzip.open () вместо него).

v0.8. 3

  • При чтении файлов, сжатых с помощью gzip, разрешите pigz использовать по умолчанию не более четырех потоков. Ранее это ограничение применялось только при записи в файл.
  • Поддержка Python 3.8

v0.8.0

  • Повышена скорость перебора файлов, сжатых с помощью gzip.

v0.6.0

  • Для чтения из сжатых файлов xopen теперь будет использовать код pigz > подпроцесс. Это быстрее, чем при использовании gzip.open .
  • Поддержка Python 2 будет прекращена в одном из следующих выпусков.

v0.5.0

  • По умолчанию pigz теперь разрешено использовать не более четырех потоков. Мы надеемся, что это уменьшит проблемы, с которыми у некоторых пользователей было слишком много потоков при одновременном открытии большого количества файлов.
  • xopen теперь принимает объекты pathlib.Path.

Contributors

  • Марсель Мартин
  • Рубен Вордерман
  • Дополнительные сведения см. на

Ссылки

  • Исходный код
  • Сообщить о проблеме
  • Страница проекта в PyPI (индекс пакета Python)
Оцените статью
clickpad.ru
Добавить комментарий