Расчеты Dask для инициализации в блокноте Jupyter занимают много времени - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь использовать Dask для работы с набором данных, превышающим объем памяти, на моем ноутбуке через ноутбук Jupyter. Данные хранятся в виде множества CSV-файлов в корзине Amazon-s3.

Эта первая ячейка работает быстро, и я могу просматривать панель мониторинга Dask на порту 8787. Как и ожидалось.

from dask.distributed import Client
import dask.dataframe as dd
client = Client()
client

Эта вторая ячейка выполняется за 55.1 с, что мне кажется странным, поскольку она фактически не извлекает никаких данных.

df = dd.read_csv('s3://*/*/*.csv', assume_missing=True)

Эта третья ячейка зависает в течение 11 минут, прежде чем я вижу что-либо в потоке задач на приборной панели, но затем она работает, как и ожидалось, всего за 13 м 3 с.

df['timestamp']=dd.to_datetime(df['timestamp'], unit='ms')
df = df.set_index('timestamp')
df = client.persist(df)

A picture of my dashboard

По духу это похоже на Клиент Dask Distributed занимает много времени для инициализации в jupyter lab , но мой клиент запускается нормально, и в конце концов все работает. Я что-то упускаю из виду? Спасибо!

1 Ответ

0 голосов
/ 16 января 2019

Конечно, вы можете запустить профилировщик, чтобы выяснить, что именно требует времени. Даже в планировщике есть информация о профилировании, хотя она и не так доступна.

Скорее всего, уходит время на сканирование всей информации о файлах для множества файлов на S3. Dask должен перечислить все эти файлы, чтобы выяснить, насколько они велики, и назначить блоки для чтения, которые требуют много медленных HTTP-вызовов.

Это, в свою очередь, создает очень большое количество задач, как вы уже нашли. Общий график задач должен быть сериализован и отправлен планировщику для выполнения, а затем обработан планировщиком и отправлен работникам. Чем больше график, тем больше складываются эти затраты.

Короче говоря, если вы хотите оптимизировать скорость передачи данных, вам лучше разделить входящие данные на гораздо большие куски. Вы увидите некоторые рекомендации по размерам порций данных порядка 100 МБ.

...