Re: [問題] 透過R使用Rhdfs package讀取超大CSV檔
※ 引述《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
05/24 00:50, 1F
→
05/27 10:32, , 2F
05/27 10:32, 2F
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章