Как сделать Dask ленивым, как PySpark, для таких операций, как .head (20)? - PullRequest
0 голосов
/ 02 июня 2018

В PySpark всякий раз, когда я выстраиваю ряд сложных операций на очень большом фрейме данных df и затем набираю:

df.show(20)

Spark будет делать только то, что необходимо (на частичном наборе данных), чтобы быстро вернуть 20 записей для отображения.Он не выполняет операции со всеми строками кадра данных df, если только я не заставлю это сделать это с .collect().

С другой стороны, в Dask , когда я делаю то же самое:

df.head(20)

Dask фактически выполняет операции со всем фреймом данных (и этов течение длительного времени), а затем возвращает 20 лучших записей.

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

1 Ответ

0 голосов
/ 02 июня 2018

Следующая команда

df.head(20)

берет данные только из первого раздела вашего фрейма данных, предполагая, что в нем не менее 20 строк.Обратите внимание, что потребуется целом первого раздела.То, какая именно работа требуется, чтобы это произошло, зависит, например, от определения df, например: это может зависеть от большого количества входных данных для некоторой сложной операции groupby / shuffle и от того, с каким размером раздела вы работаете.

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

Сказав все это, более подробная информация о том, что вы считаете медленным, может дать ответ с конкретными предложениями по улучшению производительности.

...