Pandas / Dask - Очень долго писать в файл - PullRequest
0 голосов
/ 05 мая 2020

У меня есть несколько файлов. Большой - ~ 87 миллионов строк. У меня есть другие, которые составляют ~ 500 тыс. Строк. Часть того, что я делаю, - это присоединяюсь к ним, и когда я пытаюсь сделать это с помощью Pandas, у меня возникают проблемы с памятью. Итак, я использую Dask. Все соединения / применения выполняются очень быстро, но тогда для записи в CSV требуется 5 часов, даже если я знаю, что результирующий фрейм данных состоит всего из 26 строк.

Я читал, что некоторые соединения / применения не самые лучшие для Dask, но означает ли это, что при использовании Dask он работает медленнее? Потому что мои были очень быстрыми. На выполнение всех моих вычислений / манипуляций с миллионами строк уходит секунды. Но на то, чтобы записать, уходит целая вечность. Есть идеи, как это ускорить / почему это происходит?

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

dask использует ленивое вычисление. Это означает, что когда вы выполняете операции, вы фактически создаете только граф обработки.

Как только вы пытаетесь записать данные в файл csv, Dask начинает выполнение операций. И поэтому на это уходит 5 часов, ему просто нужно обработать много данных.

См. https://tutorial.dask.org/01x_lazy.html для получения дополнительной информации о topi c.

Один из способов ускорить обработку - увеличить параллелизм за счет использования машины с большим количеством ресурсов.

0 голосов
/ 05 мая 2020

Вы можете использовать параллельную обработку Dask или попробовать записать в файл Parquet вместо CSV, так как Parquet работает очень быстро с Dask

...