2017-07-18 15 views
1

私は1Bレコード以上の寄木細工のファイルを持っています。 私は、次のステートメントでgroupbyを実行しようとしている:私は次のように構成されたclientで実行しているよDask groupby MemoryError:

dfg = df[['col1','col2','col3']].groupby(['col1','col2']]).count().compute() 


client = distributed.Client(set_as_default=True)

私はMemoryError:

は、私は別のクライアント構成で実行されている必要があり得ますか?

私はコアをスタンドアロンのワークステーション上で実行しています:24、メモリ:123ギガバイトところで

- 終わりに私は新しいカラムとして元dfcount背中を保存する必要があります。

提案がありますか? Daskではなく、groupbyをデータベースで実行する必要がありますか?

答えて

0

あなたがやっている操作では、groupby(...).count()は少しのスペースで完了するはずです。

私が見る唯一の可能性は、あなたのパーティションが非常に大きいため、一度に24個のメモリを一度にメモリに格納することが問題になることです。

申し訳ありませんが、私はここでは役に立たないです。

+0

小さいパーティションの寄木細工を再作成する必要がありますか?そうであれば、 'dask'はこれを行うオプションを持つことができます(' partition_on'パラメータは関係ありません)。 'client.distribution'の設定を支援できますか? –

+0

これがあなたの問題であるかどうかわかりません。それは盲目の推測です。 – MRocklin

+0

レコードのために - 24コアと123 GBのメモリを持つシングルマシンでは、Daskで250億レコードの 'group by'を実行することができず、' SQL SERVER'に移動しなければなりませんでした。マシンには192GBのRAMがありますが、 'dask cluster 'はすべてのRAMを識別できませんでした。 –