2017-07-18 65 views
1

我有超過1B記錄的Parquet文件。 我試圖運行與下面的語句groupbyDask groupby MemoryError:

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

我用下面的配置的client運行。
client = distributed.Client(set_as_default=True)

我得到一個MemoryError:

我應該用不同的客戶端配置運行?

我與核心獨立的工作站上運行:24,內存:123 GB

BTW - 最後我需要保存count回到原來的df作爲新列。

有什麼建議嗎?我應該在數據庫中運行groupby而不是Dask

回答

0

您正在進行的操作,groupby(...).count()應該在少量空間中完成。

我看到的唯一可能是你的分區可能非常大,所以一次有24個分區存在問題?

對不起,我不能在這裏更有幫助。

+0

所以我應該用較小的分區重新創建鑲木地板?如果是這樣 - 可以選擇'dask'('partition_on'參數不相關)。 「client.distribution」的配置可以幫助嗎? –

+0

我不知道這是你的問題。這只是一個盲目的猜測。 – MRocklin

+0

僅供參考 - 在24核和123 GB內存的單機上,我們無法在Dask中執行25億條記錄中的group by,我們不得不遷移到SQL SERVER。順便說一下機器有192GB的內存,但'dask集羣'不能識別所有的內存。 –