簡體   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