Работа с наборами данных, которые соответствуют времени загрузки памяти - PullRequest
0 голосов
/ 03 июля 2018

Я понимаю, что основное использование dask - для данных, которые не помещаются в памяти, но мне все еще любопытно.
Почему разница во времени при создании фрейма данных Pandas против фрейма данных Dask? (Я читал о накладных расходах, но должно ли это быть значительным?)

enter image description here

enter image description here

1 Ответ

0 голосов
/ 09 июля 2018

Не следует ожидать, что загрузка фрейма данных будет происходить быстрее. В какой-то момент система должна - поток байтов с диска (фиксированная стоимость) - разбор текста (эта часть распараллеливается) - передавать данные между работниками (это может потребовать дорогостоящей сериализации и связи) - получить конкатенацию (это требует много памяти и может быть дорогостоящим, если у вас много рабочих)

Сколько времени это займет, сильно зависит от используемого вами планировщика, потому что это влияет на то, сколько копий данных необходимо и сколько происходит обмен данными. Вы можете попробовать распределенный планировщик с различными сочетаниями потоков и процессов. Всегда есть некоторые накладные расходы для распределения задач.

Модель Dask предназначена для переноса вычислений на данные, а не наоборот. Если вы работали на фрейме данных dask (фильтр, группа, вычисления, агрегирование) и выполняли .compute() только на сравнительно небольшом выходе, то вычисления выполнялись бы на тех же рабочих местах, где данные также загружаются, исключая сериализацию и обмен данными. расходы.

Хотя, в общем и целом, , если данные удобно помещаются в памяти, то панды, вероятно, неплохо справляются с быстротой.

...