繁体   English   中英

R:是否有可能将2000万行CSV中的读取并行/加速到R?

[英]R: Is it possible to parallelize / speed-up the reading in of a 20 million plus row CSV into R?

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

意识到最好使用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)

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

如果在data.table使用fread ,则可能不需要并行。

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万行!

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM