7

私の問題は、大きなデータ セット (約 2500 万行と 10 列、つまり約 1GB のデータ) に対する単純な計算にあります。私のシステムは次のとおりです。

32bits/Windows7/4Gb Ram/R Studio 0.96, R 2.15.2

BigMemory パッケージを使用してデータベースを参照できます。そして、私のデータベースで関数を使用します。また、ffパッケージ、ファイルハッシュなどでそれを行うことができます.

問題は、単純な計算 (一意の値、平均など) を計算しているときに発生します。典型的な問題があります。

「ベクトル サイズ n mb を割り当てることができません」

、ここで n は 70mb ~ 95mb などのように小さくすることができます。

私はこれについてこれまでに提供されたすべての(私が思うに)解決策について知っています:

increase RAM.
launch R with inline code "--max-mem-size XXXX",  
use memory.limit() and memory-size() commands, 
use rm() and gc(), 
work on 64bit, 
close other programs, free memory, reboot, 
use packages bigmemory, ff, filehash, sql, etc etc.
improve your data, use integers, shorts, etc. ...  
check memory usage of intermediate calculations, ... 
etc. 

これはすべてテストされ、実行されます(明らかに、別のシステム/マシンへの移動を除く)など。

しかし、私はまだ「ベクトルサイズn mbを割り当てることができません」というメッセージを受け取ります。たとえば、nは約90mbで、Rや他のプログラムからのメモリ使用量はほとんどなく、すべてが再起動され、新鮮です....私は違いを認識しています空きメモリとwindowsやRなどからの割り当ての間ですが、

使用可能なメモリが 3GB を超えるため、意味がありません。原因は本当にwindows32bの下にあると思います-Rメモリ管理ですが、4GBのRAMを購入したり、すべてのシステムを64ビットに切り替えて70MBを割り当てたりするのは冗談のようです。

足りないものはありますか?

4

2 に答える 2

4

問題は、R が 90MB の連続スペースを割り当てようとすることです。残念ながら、多くの操作を行った後、メモリが断片化しすぎている可能性があります。

可能であれば、コードを最適化して、一度に小さなデータのチャンクを使用するようにしてください。

あなたが言及したような単純な計算を実行しようとしている場合 (例: 平均、行の最大数など)、オブジェクトに対してbiganalytics多くの操作を実行できる を使用してみてください。big.matrix

それ以外の場合は、私の知る限り、64 ビット OS と 64 ビット R に切り替える以外にやるべきことはあまりありません。

于 2012-11-12T12:03:47.863 に答える
1

CRANのff パッケージを見てください。RAMを使用する代わりに、固定ファイルのメモリスロットにデータを割り当てることにより、Rを「だまします」。データのインポートではかなりうまく機能します。ffbase パッケージを使用して、ff オブジェクトに対して単純で効率的な計算を実行することもできます。

于 2013-02-28T20:41:59.640 に答える