Как работать с большим csv-файлом 50GB на языке r?
Я относительно новичок в" большом процессе данных " в r здесь, надеюсь найти некоторые советы о том, как обращаться с файлом csv 50 GB. Текущая проблема заключается в следующем:
таблица выглядит так:
ID,Address,City,States,... (50 more fields of characteristics of a house)
1,1,1st street,Chicago,IL,...
# the first 1 is caused by write.csv, they created an index raw in the file
Я хотел бы найти все строки, которые принадлежат Сан-Франциско, Калифорния. Это должна быть простая проблема, но csv слишком велик.
Я знаю, что у меня есть два способа сделать это в R и другой способ использовать базу данных для ее обработки:
(1) с помощью Пакеты ffdf R:
С момента последнего сохранения файла он использовал write.csv и он содержит все различные типы.
all <- read.csv.ffdf(
file="<path of large file>",
sep = ",",
header=TRUE,
VERBOSE=TRUE,
first.rows=10000,
next.rows=50000,
)
консоль дает мне это:
Error in ff(initdata = initdata, length = length, levels = levels, ordered = ordered,
: vmode 'character' not implemented
поиск в Интернете, я нашел несколько ответов, которые не соответствовали моему случаю, и я не могу понять, как передать "характер" в тип "фактор", как они упоминали.
затем я попытался использовать чтение.таблица.ffdf, это еще большая катастрофа. Я не могу найти надежного проводника. для этого.
(2) Использование строки чтения R:
Я знаю, что это еще один хороший способ, но не можете найти эффективный способ сделать это.
(3) использование SQL:
Я не уверен, как перевести файл в SQL версию, и как с этим справиться, если есть хорошее руководство, я хотел бы попробовать. Но в целом, я хотел бы придерживаться с Р.
Спасибо за ответ и помощь!
2 ответов
Это слишком долго для комментария.
R -- в своей базовой конфигурации -- загружает данные в память. Память дешева. 50 Гбайт по-прежнему не является типичной конфигурацией (и вам понадобится больше, чтобы загрузить данные и сохранить их). Если вы действительно хороши в R, вы можете выяснить другой механизм. Если у вас есть доступ к кластеру, вы можете использовать некоторую параллельную версию R или Spark.
вы также можете загрузить данные в базу данных. Для задачи под рукой база данных очень хорошо подходит для этой проблемы. R легко подключается практически к любой базе данных. И вы можете найти базу данных очень полезной для того, что вы хотите сделать.
или вы можете просто обработать текстовый файл in situ. Инструменты командной строки, такие как awk, grep и perl, очень подходят для этой задачи. Я бы рекомендовал этот подход для одноразовых усилий. Я бы рекомендовал базу данных, если вы хотите сохранить данные для аналитических целей.