Вы можете создавать «коллекции» dask, такие как фреймы данных, из фьючерсов и отложенных объектов, которые хорошо взаимодействуют друг с другом.
Для каждого раздела, где вы знаете, какая машина должна его загружать, вы можете создать будущее следующим образом:
f = c.submit(make_part_function, args, workers={'my.worker.ip'})
, где c
- это клиент dask, а адрес - это машина, на которой вы хотите, чтобы это произошло. Вы также можете указать allow_other_workers=True
, если это предпочтение, а не требование.
Чтобы сделать фрейм данных из списка таких фьючерсов, вы могли бы сделать
df = dd.from_delayed([dask.delayed(f) for f in futures])
и в идеале укажите meta=
, дающий описание ожидаемого кадра данных. Теперь дальнейшие операции в данном разделе предпочтительнее планировать на том же рабочем, который уже хранит данные.