r - 使用 fread(加载)和 write.csv 的文件大小问题。写入阶段从 20GB 到 > 60GB
问题描述
我的问题是write.csv
- 或者我工作过程中的其他东西 - 将我的文件大小从 19GB 增加到超过 60GB。我的意思是超过 60GB,因为保存过程因内存问题而中断。当我将 250 000 行添加到近 300 万行的数据库中时,就发生了这种情况。现在,我有两个问题:1)如何克服上述问题和 2)如何读取这个巨大的数据以及如何以一致的大小保存它。对于那些不熟悉存储推文的人来说,我的文件大小比应该的要重。我只存储了 91 列的 29 列(下载推文时的标准列)。
这是我的过程:
我正在使用rtweet
这些天下载推文。因此,我每天下载 250 000 条推文。对于每一天,我使用fread
fromdata.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 行,以了解我的文件中的一切是否仍然正常,并且确实如此。
先感谢您。
解决方案
推荐阅读
- python - 从 csv 数据绘制频率直方图的错误
- oracle - 为什么我在尝试使用立即执行创建目录对象时收到 ORA-00900 Invalid SQL statement?
- c++ - VS Code C++:不准确的系统 includePath 错误(wchar.h、boost/lambda/lambda.hpp)
- text - Informix:将 TEXT 转换为 BSON
- php - 将带有 stdClass Obect 的 PHP 数组隐藏到 HTML 列表中
- spring-boot - 我可以在 cosmos db spring boot 应用程序中查找多个参数吗?
- regex - 复杂的 (PHP) 正则表达式,具有积极的后视能力
- android - 按下返回键时如何防止数据丢失
- javascript - 查找和删除数组中的匹配值和对应值
- gitlab - Terragrunt + 带模块的 Terraform + GITLab