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

n.e*_*e.w 8 csv parallel-processing r bigdata

一旦CSV文件是通过加载read.csv,这是相当琐碎的使用multicore,segue等玩弄于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)
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*son 5

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

library(data.table)
dt <- fread("myFile.csv")
Run Code Online (Sandbox Code Playgroud)

对这个问题的评论说明了它的力量.这也是我自己的经验的一个例子:

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

我能够在10秒内读取104万行!


Pau*_*tra 4

你能做的就是使用scan. 它的两个输入参数可能会很有趣:nskip。您只需打开两个或多个到该文件的连接,然后使用skipn选择要从文件中读取的部分。有一些注意事项:

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

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