[英]R: Is it possible to parallelize / speed-up the reading in of a 20 million plus row CSV into R?
一旦通過read.csv
加載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)
任何想法/想法都非常感激。
如果在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
。 它的兩個輸入參數可能證明是有趣的: n
和skip
。 您只需打開兩個或多個文件連接,然后使用skip
和n
選擇要從文件中讀取的部分。 有一些警告:
但你可以嘗試一下,看看它是否會提高你的速度。
閃存或傳統高清存儲? 如果是后者,那么如果您不知道文件在驅動器上的位置以及它是如何拆分的,那么加速操作非常困難,因為多個同時讀取不會比一個流讀取更快。 這是因為磁盤而不是CPU。 如果沒有從文件的存儲級別開始,就無法並行化。
如果它是閃存,那么像Paul Hiemstra這樣的解決方案可能有所幫助,因為良好的閃存存儲可以具有出色的隨機讀取性能,接近順序。 嘗試一下......但如果沒有幫助你知道原因。
此外...快速存儲接口並不一定意味着驅動器可以使其飽和。 您是否對驅動器進行了性能測試,看看它們的速度有多快?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.