8

一旦通过 CSV 加载,使用等来处理 CSV 中的数据read.csv就相当简单了。然而,阅读它是相当耗费时间的。multicoresegue

意识到最好使用 mySQL 等。

假设使用运行 R2.13 的 AWS 8xl 集群计算实例

规格如下:

Cluster Compute Eight Extra Large specifications:
88 EC2 Compute Units (Eight-core 2 x Intel Xeon)
60.5 GB of memory
3370 GB of instance storage
64-bit platform
I/O Performance: Very High (10 Gigabit Ethernet)

任何想法/想法都非常感谢。

4

3 回答 3

5

fread如果您使用in ,则可能不需要并行化data.table

library(data.table)
dt <- fread("myFile.csv")

对这个问题的评论说明了它的力量。这里还有一个我自己的经验的例子:

d1 <- fread('Tr1PointData_ByTime_new.csv')
Read 1048575 rows and 5 (of 5) columns from 0.043 GB file in 00:00:09

我能够在 10 岁以下阅读 104 万行!

于 2015-05-01T18:57:00.610 回答
4

闪存还是传统的高清存储?如果是后者,那么如果您不知道文件在驱动器上的位置以及它是如何拆分的,那么很难加快速度,因为多个同时读取不会比一个流式读取快。这是因为磁盘,而不是 CPU。如果不从文件的存储级别开始,就无法并行化。

如果是闪存存储,那么像 Paul Hiemstra 的解决方案可能会有所帮助,因为良好的闪存存储可以具有出色的随机读取性能,接近顺序。试试看......但如果它没有帮助你知道为什么。

另外......快速存储接口并不意味着驱动器可以使其饱和。您是否对驱动器进行了性能测试以查看它们的实际速度?

于 2012-01-30T13:28:49.370 回答
4

你可以做的是使用scan. 它的两个输入参数可能被证明是有趣的:nskip. 您只需打开文件的两个或多个连接并使用skipn选择要从文件中读取的部分。有一些警告:

  • 在某些阶段磁盘 i/o 可能会证明瓶颈。
  • 我希望在打开同一个文件的多个连接时扫描不会抱怨。

但是你可以试一试,看看它是否能提高你的速度。

于 2012-01-30T08:15:10.707 回答