Re: [問題] 透過R使用Rhdfs package讀取超大CSV檔

看板R_Language作者 (*^o^*)時間10年前 (2014/05/23 10:28), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串4/5 (看更多)
※ 引述《Wush978 (拒看低質媒體)》之銘言: : ※ 引述《dppman (*^o^*)》之銘言: : : 我試了repeat: : : repeat { : : m = hdfs.read(f) : : c = rawToChar(m) : : print(c) : : if ( is.null(c) ) break : : } : : 可是跑好久還沒跑完... : : 我是用Web版的RStudio開發,看了一下m的type是raw... : : Sorry..我只剩C還在腦中有,R實在跟他不熟.... : : 不知道是否有人可以指點一下...,這樣的寫法是否OK?怎麼增加效能呢? : : Thanks in advance! : :   : 建議你先測量一下throughput : ```r : start.time <- Sys.time() : repeat { : m = hdfs.read(f) : duration <- as.numeric(difftime(Sys.time(), start.time, unit = "secs")) : print(length(m) / duration) # 每秒的bytes數 : start.time <- Sys.time() : } : ``` : 先看一下hdfs.read的效能,如果throughput是1MB / s的速度的話 : 20G 需要 20*2^30 / 2^20 秒,大約是5.6小時 : --- : 也建議你另外量測一下hdfs fs -put 的頻寬, : 拿來和你在R 裏面的測到的throughput做比較。 : 兩者的差距是你可以在R 裡面優化的程度。 : 所以如果兩者差不多快的話,其實你R 怎麼改也是這樣。 : FYI 測試了一下throughput: 在同要的主機(安裝RStudio Server的主機): Part I: [root@CDH-RWeb01 ~]# time hadoop fs -put /tmp/201303.csv /tmp/ real 3m5.876s user 0m32.257s sys 0m14.262s [root@CDH-RStudio ~]# ls -al /tmp/201303.csv -rw-r--r-- 1 root root 8596758123 2014-05-23 09:54 /tmp/201303.csv 結果:大約在64086KB /sec Part II: 用下列這段測試 start.time <- Sys.time() repeat { m = hdfs.read(f) duration <- as.numeric(difftime(Sys.time(), start.time, unit = "secs")) print(length(m) / duration) # 每秒的bytes數 start.time <- Sys.time() } 結果:450KB/sec ~ 465KB/sec [1] 464816.2 [1] 465376.1 [1] 464151.4 [1] 457809.4 [1] 456209.6 [1] 453534.4 [1] 454532.2 [1] 450441.2 差距很大@@@@ 該怎麼優化呢? Thanks in advance. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.150.53 ※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1400812100.A.62F.html

05/24 00:50, , 1F
加大buffersize看看
05/24 00:50, 1F

05/27 10:32, , 2F
如果想插Rprof()該放哪裡比較好呢?
05/27 10:32, 2F
文章代碼(AID): #1JVh94Ol (R_Language)
文章代碼(AID): #1JVh94Ol (R_Language)