[問題] 記憶體不足

作者: jklkj (誠實可靠小郎君)   2016-06-01 15:53:04
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
效能諮詢(我想讓R 跑更快)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
目前我要把大概幾千萬筆的資料(目前只跑到2000多萬筆)放進R去,
應該會有兩三個dataframe,每個dataframe都有數千萬筆
打算把R當作資料庫,不管是join或是一些資料的整理
我把資料一直rbind下去,超過兩千多萬筆之後就會出現記憶體不足的問題
想請問這樣的問題除了直接加記憶體以外(因為是公司的電腦)
有別的方法嗎?
[程式範例]:
程式範例就是很簡單的
sale <- rbind(sale1, sale)
錯誤訊息如下
error: cannot allocate vector of size 256.0 mb
我有找到一些解決的方法是加ram(其實我也很想加到32G)、用64bit(感覺我已經在用了)
想請問一下有別的解決方法嗎?
[環境敘述]:
R version 3.3.0 (2016-05-03)
作者: celestialgod (天)   2016-06-01 16:18:00
那麼大的資料量還是直接用資料庫省事
作者: cywhale (cywhale)   2016-06-01 16:35:00
記得看過用sqldf把檔案當暫時資料庫可以避掉記憶體不足
作者: jklkj (誠實可靠小郎君)   2016-06-01 17:13:00
http://bryannotes.blogspot.tw/2014/07/r-sqldf-vs-lappy.html 這個網站有看到作者用樓上說的sqldf,而且row數量也相當多(應該夠我用一陣子了),想問一下這SQLDF是要怎麼當暫時資料庫,感謝
作者: cywhale (cywhale)   2016-06-01 17:23:00
我剛google一下 這篇 http://goo.gl/soE8XA我自己沒用過,我也是跟一樓C大說的,直接用資料庫..如果資料都是同一種(如數值)或可以轉換,也可以用bigmemory in R..
作者: jklkj (誠實可靠小郎君)   2016-06-04 10:23:00
不好意思,我沒用過bigmmory或ff,這兩個套件執行速度會很慢嗎?我是指跟沒用比的話然後我用了sqldf的方法結果資料跑不出來,即便是完全copy
作者: celestialgod (天)   2016-06-04 11:15:00
ff或bigmemory都用硬碟讀取,速度看硬碟讀取速度用硬碟讀取,除非用SSD,不然應該快不起來畢竟記憶體速度太快
作者: cywhale (cywhale)   2016-06-04 14:27:00
是因原po說記憶體不夠才推此法,但其實R外cat應該最好..

Links booklink

Contact Us: admin [ a t ] ucptt.com