Проблема с размером файла при использовании fread (для загрузки) и write.csv. От 20 ГБ до> 60 ГБ в фазе записи - PullRequest
0 голосов
/ 09 апреля 2020

Моя проблема в том, что write.csv - или что-то еще в моем рабочем процессе - увеличило размер моего файла с 19 ГБ до более чем 60 ГБ. Я имею в виду более 60 ГБ, потому что процесс сохранения был прерван из-за проблем с памятью. Это произошло, когда я добавил 250 000 строк в мою базу данных почти из 3 миллионов строк. Теперь у меня есть 2 проблемы: 1) как преодолеть вышеуказанную проблему и 2) как прочитать эти огромные данные и как сохранить их в согласованном размере. Для тех, кто не знаком с хранением твитов, мой размер файла больше, чем должен быть. Я храню только 29 столбцов из 91 (стандартные столбцы при загрузке твитов).

Вот мой процесс:

Я загружаю твиты, используя rtweet в эти дни. Таким образом, я загружаю твиты порциями по 250 000 в день. Для каждого дня, используя fread из data.table, я загружаю свою старую базу данных. Затем я связываю оба фрейма данных с rbind. Наконец, я использую write.csv, чтобы сохранить мой объект. Я повторяю этот процесс каждый раз. Вот мой код:

base <- fread("tweets.csv")
base$user_id <- as.character(base$user_id)
base$status_id <- as.character(base$status_id)
base$retweet_status_id <- as.character(base$retweet_status_id)
base$retweet_user_id <- as.character(base$mentions_user_id)

datos <- search_tweets2("keywords", n = 250000, include_rts = T, lang = "es", retryonratelimit = T)

datos <- datos[,c(1,2,3,4,5,6,12,14,30,31,32,48,49,50,51,54,55,56,57,61,62,73,74,75,78,79,83,84)]

datos$mentions_user_id <- as.character(datos$mentions_user_id)
datos$mentions_screen_name <- as.character(datos$mentions_screen_name)
datos$created_at <- as.character(datos$created_at)
datos$retweet_created_at <- as.character(datos$retweet_created_at)
datos$account_created_at <- as.character(datos$account_created_at)

base <- rbind(base,datos)
write.csv(base, "tweets.csv")

Нужно сказать, что когда я пишу новый файл, я перезаписываю. Вероятно, здесь основная проблема при загрузке и перезаписи. Я не знаю. В противном случае, я читал и думаю, что мое решение может быть в read.csv.sql, загружая небольшими частями мою базу данных и сохраняя корректным способом. Но read.csv.sql представляет некоторые проблемы с моим количеством столбцов. Он говорит: «Ошибка в файле_соединения_импорта (conn@ptr, имя, значение, sep, eol, skip): RS_sqlite_import: строка 2 tweets.csv ожидала 29 столбцов данных, но нашла 6».

Я загружаю 100 строк используя 'read.csv (file.csv, nrows = 100) `, чтобы узнать, все ли в моем файле все в порядке, и это так.

Заранее спасибо.

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