首页 > 解决方案 > 使用 fread(加载)和 write.csv 的文件大小问题。写入阶段从 20GB 到 > 60GB

问题描述

我的问题是write.csv- 或者我工作过程中的其他东西 - 将我的文件大小从 19GB 增加到超过 60GB。我的意思是超过 60GB,因为保存过程因内存问题而中断。当我将 250 000 行添加到近 300 万行的数据库中时,就发生了这种情况。现在,我有两个问题:1)如何克服上述问题和 2)如何读取这个巨大的数据以及如何以一致的大小保存它。对于那些不熟悉存储推文的人来说,我的文件大小比应该的要重。我只存储了 91 列的 29 列(下载推文时的标准列)。

这是我的过程:

我正在使用rtweet这些天下载推文。因此,我每天下载 250 000 条推文。对于每一天,我使用freadfromdata.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我的列数存在一些问题。它说:“connection_import_file 中的错误(conn@ptr,名称,值,sep,eol,skip):RS_sqlite_import:tweets.csv 第 2 行预期有 29 列数据,但找到了 6 列”。

我使用 'read.csv(file.csv, nrows = 100)` 加载 100 行,以了解我的文件中的一切是否仍然正常,并且确实如此。

先感谢您。

标签: rcsvfreadfilesizetweets

解决方案


推荐阅读