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

看板R_Language作者 (拒看低質媒體)時間10年前 (2014/08/28 00:33), 10年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/5 (看更多)
最近自己在玩hadoop-2.2.0的hdfs, 發現已經有C client。 試了一下,發現可以用Rcpp簡單包到R中。 我自己測試的讀取效能約50MB/s (可能和網路有關), 和command line的hadoop差不多。 ※ 引述《dppman (*^o^*)》之銘言: : ※ 引述《Wush978 (拒看低質媒體)》之銘言: : : 建議你先測量一下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), 來自: 114.24.242.21 ※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1409157227.A.872.html ※ 編輯: Wush978 (114.24.242.21), 08/28/2014 00:34:31
文章代碼(AID): #1J_WXhXo (R_Language)
文章代碼(AID): #1J_WXhXo (R_Language)