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

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

Пробовал на RStudio, windows Vista, 32 бит, ОЗУ: 3 Гб:

transactions <- read.table(gzfile("E:/2014/Proyectos/Kaggle/transactions.gz"))
write.table(transactions, file="E:/2014/Proyectos/Kaggle/transactions.csv")

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

> transactions <- read.table(gzfile("E:/2014/Proyectos/Kaggle/transactions.gz"))
Error: cannot allocate vector of size 64.0 Mb
> write.table(transactions, file="E:/2014/Proyectos/Kaggle/transactions.csv")
Error: cannot allocate vector of size 64.0 Mb

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

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


person user3591356    schedule 01.05.2014    source источник
comment
На какой платформе вы находитесь? Если вы используете Linux, вы можете взаимодействовать с терминалом unix/shell и обрабатывать его там, прежде чем перенести его в R.   -  person Rich Scriven    schedule 01.05.2014
comment
Спасибо, теперь у меня есть файл .csv   -  person user3591356    schedule 02.05.2014


Ответы (1)


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

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

person James King    schedule 01.05.2014
comment
Мне не нравятся приложения, которые удаляют свои входные файлы и поэтому не используют gunzip напрямую. Скорее я буду использовать gzip -c -d. - person Matthew Lundberg; 01.05.2014
comment
Хорошо, но это выводит на стандартный вывод и требует перенаправления, верно? gzip -c -d file.csv.gz > file.csv или zcat file.csv.gz > file.csv. Вероятно, gunzip -k file.csv.gz проще всего. - person James King; 01.05.2014
comment
Большое спасибо за Вашу помощь - person user3591356; 01.05.2014
comment
Конечно, удачи в конкурсе. Я тоже в Shoppers. - person James King; 01.05.2014
comment
Хорошо, я собираюсь изучить покупательское поведение, чтобы предсказать. - person user3591356; 02.05.2014
comment
Я думаю, вы используете набор данных Amazon, ага - person Statham; 01.11.2018