我有一个非常大的数据集(未压缩约13GB),需要反复加载。第一次加载(并保存到不同的格式)可能会非常缓慢,但之后每一次加载都应尽可能地快速。从哪种最快的方式和格式中加载数据集?
我怀疑最佳选择是类似于
saveRDS(obj, file = 'bigdata.Rda', compress = FALSE)
obj <- loadRDS('bigdata.Rda)
但是,使用data.table包中的fread函数似乎比这种方法慢。这不应该是这样的,因为fread函数将文件从CSV格式转换(尽管它确实高度优化)。对于一个大约800MB的数据集,一些计时如下:
> system.time(tmp <- fread("data.csv"))
Read 6135344 rows and 22 (of 22) columns from 0.795 GB file in 00:00:43
user system elapsed
36.94 0.44 42.71
saveRDS(tmp, file = 'tmp.Rda'))
> system.time(tmp <- readRDS('tmp.Rda'))
user system elapsed
69.96 2.02 84.04
先前的问题
这个问题与R的当前状态有关,例如一个回答建议从二进制格式读取将始终比文本格式快。而使用 SQL 的建议在我这种情况下也没有帮助,因为需要整个数据集,而不仅仅是它的子集。
还有相关的问题,例如一次加载数据的最快方式(例如:1)。