2017-12-12 11 views
0
a = dd.read_csv('huge.csv', blocksize=1e6) 
g = a.groupby(['col_a', 'col_b']) 
g.col_c.sum().max().compute() # failed, MemoryError 

私はdask.dataframeがメモリの問題で失敗しないと思いましたが、何ですか? はところで、私が思うblocksize事項については、私は非常に小さいサイズを設定した場合、1E3を言う、read_csvはデフォルトで....大きなファイルにデータフレームメモリの問題があります

答えて

1

GROUPBY-集計を完了するために永遠にかかることは、単一のパーティションに減らします。結果に多数のグループがある場合、この単一パーティションは非常に大きくなる可能性があります。あなたはGROUPBY、集計結果は10個のパーティションではなく、単一のパーティション間で分割されることになります10

g.col_c.sum(split_out=10).max().compute() 

このように、いくつかの適度な数にgroupby.sumするsplit_out=キーワードを設定することを検討することがあります。

これはしかし実際には、あなたの問題である場合、私は、これは、私はまたminimal complete verifiable example

を作成することはお勧めし動作しない場合、あなたはおそらく、より大きなブロックサイズをしたい、知りません。 1MBのブロックは非常に小さいです。私はそれを10〜100倍撮影するか、それともデフォルト値のままにしておきます。

関連する問題