【发布时间】:2016-04-15 00:59:20
【问题描述】:
我在 512gb 内存服务器上。我有一个 84gig 的 CSV(我知道,很大)。我只阅读了 79 列的 31 列,其中排除的都是浮点数/小数。
在比较了许多方法之后,似乎执行我想要的最高性能的方法是 fread 文件。文件大小为 84gb,但观看“顶部”进程使用 160 gigs 的内存 (RES),即使最终 data.table 的大小约为 20gigs。
我知道 fread 会预先分配内存,这就是它如此之快的原因。只是想知道 - 这是正常的吗?有没有办法抑制内存消耗?
编辑:看起来,如果我只要求 fread 读取 10000 行(300MM),fread 仍将预分配 84 gigs 的内存。
【问题讨论】:
-
也许
fread一次将文件片段合并到 R 中,但如果您的服务器内存足够多,我看不出问题出在哪里。如果您还没有这样做,指定colClasses可能会有所帮助。 -
谢谢,我会试试 colClasses。问题只是我不想尽可能消耗服务器的共享资源。此外,不保证这些文件是令人愉快的。这是市场数据,我想在某些日子里数据量可能会爆炸。
标签: r data.table