千丝 发表于 2023-9-14 11:59:59

如何使用R语言处理50GB的大型CSV文件?

我在这里的“大数据处理”中相对较新,希望就如何处理50 GB的csv文件寻求一些建议。当前的问题如下:
表看起来像:
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)使用R的ffdf软件包:
自上次保存文件以来,它一直使用write.csv,并且包含所有不同的类型。
all ",
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
在网上搜索时,我发现了几个不适合我的情况的答案,而且我真的无法像他们所说的那样将“字符”转换为“因子”类型。
然后我尝试使用read.table.ffdf,这更是灾难。我找不到该指南的可靠指南。
(2)使用R的readline:
我知道这是另一种好方法,但是找不到有效的方法。
(3)使用SQL:
如果有很好的指导,我不确定如何将文件传输到SQL版本,以及如何处理。但总的来说,我想坚持使用R。
感谢您的答复和帮助!
               
解决方案:
               


                您可以在带有sqldf包的幕后使用R和SQLite。您read.csv.sql可以在sqldf包中使用该函数,然后可以查询数据,但是要获取较小的数据框。
来自文档的示例:
library(sqldf)
iris2 我已经在非常大的CSV文件上使用了该库,效果很好。
页: [1]
查看完整版本: 如何使用R语言处理50GB的大型CSV文件?