Обработка очень больших файлов в R - PullRequest
1 голос
/ 27 февраля 2020

У меня есть набор данных, который составляет 188 миллионов строк с 41 столбцом. Он представляет собой массивный сжатый файл фиксированной ширины, и в настоящее время я читаю его в R, используя пакет vroom, подобный следующему:

d <- vroom_fwf('data.dat.gz', 
          fwf_positions([41 column position], 
                        [41 column names])

vroom делает замечательную работу в том смысле, что данные фактически читает в R-сеанс на машине с 64 ГБ памяти. Когда я запускаю object.size на d, это колоссальный размер 61 Гб. Когда я оборачиваюсь, чтобы сделать что-нибудь с этими данными, я не могу. Все, что я возвращаю Error: cannot allocate vector of size {x} Gb, потому что на самом деле не осталось никакой памяти для чего-либо с этими данными. Я пробовал базу R с [, dplyr::filter и пытался преобразовать в data.table через data.table::setDT каждый с тем же результатом.

Итак, мой вопрос: каковы стратегии людей для такого рода вещей? Моя главная цель - преобразовать сжатый файл фиксированной ширины в формат паркета, но я хотел бы разбить его на небольшие, более управляемые файлы на основе некоторых значений в столбце данных, а затем записать их в паркет (используя arrow::write_parquet) * 1015. *

На данный момент мои идеи состоят в том, чтобы прочитать подмножество столбцов, оставив столбец, которым я хочу подмножество, написать файлы паркета, затем связать столбцы / объединить их вместе. Это похоже на более подверженное ошибкам решение, поэтому я подумал, что я вернусь сюда и посмотрю, что доступно для дальнейших преобразований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...