我在一台512GB的ram服务器上。我有一个84gig CSV(我知道很重)。我只读了31列79,其中排除的都是浮点数/小数。
在比较了许多方法之后,似乎是我想要的最高性能方式来运行文件。文件大小为84gb,但观看“顶部”的过程使用160 gig的内存(RES),即使最终data.table的大小约为20gig。
我知道fread预分配内存,这就是为什么它如此之快。只是想知道 - 这是正常的,有没有办法抑制内存消耗?
编辑:好像,如果我只是要求fread读取10000行(300MM),fread仍会预先分配84 gig的内存。
答案 0 :(得分:3)
见R FAQ 7.42。如果要最小化在服务器上使用的资源,请使用fread
一次读取csv,然后使用save
或saveRDS
保存生成的对象。然后在需要数据时读取该二进制文件。
或者您可以使用cut
,awk
,sed
等命令行工具来仅选择所需的列并将输出写入另一个文件。然后,您可以在该较小的文件上使用fread
。
答案 1 :(得分:0)