Я надеюсь получить представление о том, как распределенный dask управляет распределением задач из командной строки.
У меня есть следующая структура:
- В первичном коде (есть ли лучший термин для этого? Код, который не запускается в распределенном dask) s3fs используется дляперечислить содержимое сегмента
- Этот список сопоставляется с "основной" функцией, которая преобразует данные CSV в JSON, выполняя некоторые проверки качества по пути
- что преобразованные данные проходят через фильтрациюфункция для извлечения только тех данных, которые я хочу
- Эти отфильтрованные данные возвращаются в main, а затем записываются обратно в S3 с использованием s3fs
По сути, все, что я предоставляю функции client.mapэто список строк, которые являются указателями на ресурсы s3.Каждый из сотрудников отвечает за подключение к s3 и запуск всего кода, чтобы получить содержимое файла, преобразовать записи, отфильтровать их и записать обратно в s3.
Когда у меня есть 1800 файлов в s3, требуетсяпару минут, чтобы раздать и завершить все - это так.Когда у меня есть 18 000 записей, я не смог успешно распределить задачи среди рабочих и заставить их запускаться с помощью команды, подобной B=client.map(main, filelist)
- команда, кажется, просто сидит там.Если я отменяю процесс, пытаясь наметить, я получаю некоторый намек на то, что он травит кучу вещей, но я не знаю, что нужно будет травить в течение 30-60 минут.
Странно, когда я18 000 записей, даже если я попытаюсь распространить только 10 записей, например, с помощью следующей команды B=client.map(main, filelist[:10])
, я получу те же таймауты.
Основные вопросы:
- Является ли модельиметь несколько функций, вызываемых в пределах одного вызова карты в порядке?То есть я сопоставляю функцию main, которая читает объект S3, затем вызывает annotate, затем фильтрует, а затем записывает обратно в S3?
- В качестве альтернативы, я должен переместить каждую функцию к ее собственному распределенному вызову, принимая фьючерсыобъекты от каждого?
- Есть ли причина, по которой распределение 18 000 строк одному распределенному рабочему займет так много времени?
- Существует ли причина, по которой размер корзины S3 влияет на производительность?