Моя проблема в том, что 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) `, чтобы узнать, все ли в моем файле все в порядке, и это так.
Заранее спасибо.